【发布时间】:2018-11-22 16:36:17
【问题描述】:
这里是第一个问题!
countries = [{'country': 'Italy', 'size':3,'reg':9},
{'country': 'Germany', 'size':7,'reg':1},
{'country': 'USA', 'size':9,'reg':4},
]
weights = {'size' : 100, 'reg' : 30}
我正在尝试将“国家”嵌套字典中的值与“权重”字典中与匹配键关联的值相乘。我尝试了 for 循环方法,因为“权重”中的值将由用户更新。
我试过这个:
countries_weighted = copy.deepcopy(countries)
for key in weights.items():
for i in countries_weighted:
countries_weighted[i][key] *= weights[key]
这似乎不起作用:
-
TypeError Traceback (most recent call last)
<ipython-input-52-9753dabe7648> in <module>()
13 for key in weights.items():
14 for i in countries_weighted:
---> 15 countries_weighted[i][key] *= weights[key]
16
TypeError: list indices must be integers or slices, not dict
有什么想法吗?提前致谢。
【问题讨论】:
-
for i in countries_weighted:会将countries_weighted中的值返回到您的变量i,而不是索引。所以在这种情况下,i每次都会得到一个完整的字典。所以用i[key] *= weights[key]替换countries_weighted[i][key] *= weights[key]应该适合你。但是 Esteban Quiros 下面的代码要干净得多
标签: python python-3.x list dictionary for-loop