2012-11-24 81 views
-1

我想將我的字典中的數字更改爲int值,以便稍後在我的程序中使用。 到目前爲止,我有將字符串中的值轉換爲嵌套字典中的整數

import time 
import math 
x = 400 
y = 300 
def read_next_object(file):  
     obj = {}    
     for line in file:  
       if not line.strip(): continue 
       line = line.strip()       
       key, val = line.split(": ")     
       if key in obj and key == "Object": 
         yield obj      
         obj = {}        
       obj[key] = val 

     yield obj    

planets = {}     
with open("smallsolar.txt", 'r') as f: 
     for obj in read_next_object(f): 
       planets[obj["Object"]] = obj  

print(planets)     

scale=250/int(max([planets[x]["Orbital Radius"] for x in planets if "Orbital Radius" in planets[x]])) 
print(scale) 

和輸出

{'Sun': {'Object': 'Sun', 'Satellites': 'Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune,Ceres,Pluto,Haumea,Makemake,Eris', 'Orbital Radius': '0', 'RootObject': 'Sun', 'Radius': '20890260'}, 'Moon': {'Object': 'Moon', 'Orbital Radius': '18128500', 'Period': '27.321582', 'Radius': '1737000.10'}, 'Earth': {'Object': 'Earth', 'Satellites': 'Moon', 'Orbital Radius': '77098290', 'Period': '365.256363004', 'Radius': '6371000.0'}} 
3.2426140709476178e-06 

我希望能夠以數字的字典轉換爲整數繼續使用。任何幫助非常感謝。

+1

你最後一個問題完全重複!你需要開始upvoting和接受!如果你真的試圖做一些學習,你從一個問題獲得代碼並粘貼到下一個..可能會有所幫助。 –

回答

2

要建立在克里斯的回答,

>>> myDict = {'Sun': {'Object': 'Sun', 'Satellites': 'Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune,Ceres,Pluto,Haumea,Makemake,Eris', 'Orbital Radius': '0', 'RootObject': 'Sun', 'Radius': '20890260'}, 'Moon': {'Object': 'Moon', 'Orbital Radius': '18128500', 'Period': '27.321582', 'Radius': '1737000.10'}, 'Earth': {'Object': 'Earth', 'Satellites': 'Moon', 'Orbital Radius': '77098290', 'Period': '365.256363004', 'Radius': '6371000.0'}} 
>>> for body in myDict: 
...  myDict[body]['Radius'] = float(myDict[body]['Radius']) 
...  myDict[body]['Orbital Radius'] = float(myDict[body]['Orbital Radius']) 
>>> myDict 
13: {'Earth': {'Object': 'Earth', 
      'Orbital Radius': 77098290.0, 
      'Period': '365.256363004', 
      'Radius': 6371000.0, 
      'Satellites': 'Moon'}, 
'Moon': {'Object': 'Moon', 
      'Orbital Radius': 18128500.0, 
      'Period': '27.321582', 
      'Radius': 1737000.1}, 
'Sun': {'Object': 'Sun', 
     'Orbital Radius': 0.0, 
     'Radius': 20890260.0, 
     'RootObject': 'Sun', 
     'Satellites': 'Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune,Ceres,Pluto,Haumea,Makemake,Eris'}} 
+0

我有一個問題,當添加這行代碼planets [body] ['期間'] =浮動(行星[身體] ['期間']) –

+0

將期限更改爲浮動我得到一個錯誤KeyError:'Period' –

+0

這是因爲'Sun'沒有'Period'鍵。所以你必須寫一個if語句。 'myDict [body]:'中的if「Period」。 – John

0

你可以施放它們。對於某些值x,可以使用int(x)將其轉換爲整數。

我還注意到,你的一些值是浮點值。如果您希望將它們保留爲浮點值(帶小數),則可以使用float(x)

+0

如何工作,我想迭代,以避免創建任何新的列表或字跡 –

+0

'value_as_integer = int(planets [「mykey」])' – Chris

相關問題