[英]Converting the value from string to integer in a nested dictionary
我想将字典中的数字更改为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
我希望能够将字典中的数字转换为整数以供进一步使用。 任何帮助,不胜感激。
为了建立克里斯的答案,
>>> 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'}}
您可以投射它们。 对于某些x
值,可以使用int(x)
将其强制转换为整数。
我还注意到您的某些值是浮点值。 如果希望将它们保留为浮点值(带小数点),则可以使用float(x)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.