Dictionary python3从字典中查找/提取最大数字

Dictionary python3从字典中查找/提取最大数字,dictionary,python-3.x,extract,scale,Dictionary,Python 3.x,Extract,Scale,我有一本关于太阳系数据的字典(例如行星和卫星的轨道半径),我想在字典中找到最大的轨道半径。稍后我将使用它作为我正在制作的动画的比例。但是我的代码出了问题,我不确定出了什么问题 scale = 600/max([planets[key]['Orbital Radius'] for key in planets]) 我的动画窗口(在QuickDraw中)是600x600,因此我需要缩放轨道半径值,但上面的代码似乎不起作用行星是我的字典。 这是我的字典: {'Mercury': {'Orbital

我有一本关于太阳系数据的字典(例如行星和卫星的轨道半径),我想在字典中找到最大的轨道半径。稍后我将使用它作为我正在制作的动画的比例。但是我的代码出了问题,我不确定出了什么问题

scale = 600/max([planets[key]['Orbital Radius'] for key in planets])
我的动画窗口(在
QuickDraw
中)是
600x600
,因此我需要缩放轨道半径值,但上面的代码似乎不起作用<代码>行星是我的字典。 这是我的字典:

{'Mercury': {'Orbital Radius': '38001200', 'Radius': '243900.7',
'Period': '87.9691'}, 'Ariel': {'Orbital Radius': '8595000', 'Radius':
'60000', 'Period': '2.520379'}, 'Sun': {'Satellites':
'Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune,Ceres,Pluto,Haumea,Makemake,Eris',
'Orbital Radius': '0', 'Radius': '20890260'}, 'Phobos': {'Orbital
Radius': '3623500.6', 'Radius': '200000', 'Period': '0.31891023'},
'Deimos': {'Orbital Radius': '8346000', 'Radius': '200000.2',
'Period': '1.26244'}, 'Mars': {'Satellites': 'Phobos,Deimos', 'Orbital
Radius': '106669000', 'Radius': '339600.2', 'Period': '686.971'},
'Rhea': {'Orbital Radius': '24000000', 'Radius': '75000', 'Period':
'4.5'}, 'Oberon': {'Orbital Radius': '26235000', 'Radius': '75000',
'Period': '13.463'}, 'Europa': {'Orbital Radius': '36486200',
'Radius': '156000.8', 'Period': '3.551181'}, 'Tethys': {'Orbital
Radius': '13706000', 'Radius': '50000', 'Period': '1.9'}, 'Miranda':
{'Orbital Radius': '5822550', 'Radius': '23500', 'Period': '1.413'},
'Saturn': {'Satellites':
'Mimas,Enceladus,Tethys,Dione,Rhea,Titan,Iapetus', 'Orbital Radius':
'353572956', 'Radius': '6026800', 'Period': '10759.22'}, 'Uranus':
{'Satellites': 'Puck,Miranda,Ariel,Umbriel,Titania,Oberon', 'Orbital
Radius': '453572956', 'Radius': '2555900', 'Period': '30799'},
'Neptune': {'Satellites': 'Triton', 'Orbital Radius': '550000000',
'Radius': '2476400', 'Period': '60190'}, 'Titania': {'Orbital Radius':
'19575000', 'Radius': '75000', 'Period': '8.7058'}, 'Enceladus':
{'Orbital Radius': '10706000', 'Radius': '25000', 'Period': '1.4'},
'Venus': {'Orbital Radius': '57477000', 'Radius': '605100.8',
'Period': '224.698'}, 'Moon': {'Orbital Radius': '18128500', 'Radius':
'173700.10', 'Period': '27.321582'}, 'Triton': {'Orbital Radius':
'40000000', 'Radius': '135300', 'Period': '-5.8'}, 'Ceres': {'Orbital
Radius': '130995855', 'Radius': '48700', 'Period': '1679.67'},
'Mimas': {'Orbital Radius': '8433396', 'Radius': '20600', 'Period':
'0.9'}, 'Titan': {'Orbital Radius': '50706000', 'Radius': '257600',
'Period': '15.945'}, 'Ganymede': {'Orbital Radius': '47160000',
'Radius': '263400', 'Period': '7.15455296'}, 'Umbriel': {'Orbital
Radius': '11983500', 'Radius': '60000', 'Period': '4.144177'},
'Callisto': {'Orbital Radius': '69700000', 'Radius': '241000',
'Period': '16.6890184'}, 'Jupiter': {'Satellites':
'Io,Europa,Ganymede,Callisto', 'Orbital Radius': '210573600',
'Radius': '7149200', 'Period': '4332.59'}, 'Io': {'Orbital Radius':
'22000000', 'Radius': '182100.3', 'Period': '1.7691377186'}, 'Earth':
{'Satellites': 'Moon', 'Orbital Radius': '77098290', 'Radius':
'637100.0', 'Period': '365.256363004'}, 'Dione': {'Orbital Radius':
'17106000', 'Radius': '56000', 'Period': '2.7'}, 'Iapetus': {'Orbital
Radius': '72285891', 'Radius': '75000', 'Period': '79'}}

字典中的所有值都是字符串,因此您可以看到错误:

TypeError:不支持/:'int'和'str'的操作数类型

这表示您正在获取一个
int
(值600)并试图将其
//code>除以一个
字符串,这显然是没有意义的。您需要首先使用
float()
将字符串转换为浮点:

scale=600/浮点数(最大值([行星[键][轨道半径]]用于键入行星])


它需要是一个
float
而不是
int
,因为您正在尝试缩小,所以
scale
的值将小于
1
,例如,如果最大值为
1200
,网格大小为
600
,则您的缩放比例将为
0.5
(一半).

请提供行星的样本数据/目录。
。哦,好的!现在我知道那个错误是从哪里来的了!谢谢完全有道理@苏多欧