首页 > 解决方案 > 访问嵌套在列表中的字典中的值

问题描述

这里的第一个问题!

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

任何想法?提前致谢。

标签: pythonpython-3.xlistdictionaryfor-loop

解决方案


你可以这样做:

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 country in countries:
    for key in weights.keys():
        country[key] *= weights[key]

print(countries)

推荐阅读