如何使用for循环迭代字典中的所有值以调整100万


sol = {"Uranus":[2750, 3000, 2880], "Mercury":[46, 70, 57], "Earth":[147, 152, 150], "Venus":[107, 109, 108], "Mars":[205, 249, 228], "Saturn":[1350, 1510, 1430], "Jupiter":[741, 817, 779], "Pluto":[4440, 7380, 5910], "Neptune":[4450, 4550, 4500]}

我正在尝试使用我使用不同量的测量距离编制的上述词典,但我需要能够找到一种方法来获取所有值(以百万计(,并将每个值乘以100万。我可以对键进行迭代,但我一直在想如何迭代每个键的值。以下是我目前正在编写的代码,尽管可能是错误的。谢谢你的帮助。

MILLION = 1000000
length = len(sol[planet])
for planet in sol:
for i in sol[planet]:
i*Million           
print(sol)

您可以通过字典理解来做到这一点:

sol = { k : [d*1000000 for d in v] for k, v in sol.items() }

输出:

{
'Uranus': [2750000000, 3000000000, 2880000000],
'Mercury': [46000000, 70000000, 57000000],
'Earth': [147000000, 152000000, 150000000],
'Venus': [107000000, 109000000, 108000000],
'Mars': [205000000, 249000000, 228000000],
'Saturn': [1350000000, 1510000000, 1430000000],
'Jupiter': [741000000, 817000000, 779000000],
'Pluto': [4440000000, 7380000000, 5910000000],
'Neptune': [4450000000, 4550000000, 4500000000]
}

如果每个值都是一个列表,则可以执行以下操作。

for planet in sol:
for i in range(len(sol[planet])):
sol[planet][i] *= 1000000
print(sol)

这将返回{'Uranus': [2750000000, 3000000000, 2880000000], 'Mercury': [46000000, 70000000, 57000000], 'Earth': [147000000, 152000000, 150000000], 'Venus': [107000000, 109000000, 108000000], 'Mars': [205000000, 249000000, 228000000], 'Saturn': [1350000000, 1510000000, 1430000000], 'Jupiter': [741000000, 817000000, 779000000], 'Pluto': [4440000000, 7380000000, 5910000000], 'Neptune': [4450000000, 4550000000, 4500000000]},这似乎正是您想要的。

遍历dict项的副本

from copy import deepcopy
for k, v in deepcopy(sol).items():
sol[k] = [i * MILLION for i in v]

最新更新