首页 > 解决方案 > 循环遍历列表和嵌套字典

问题描述

我认为标题是正确的。如果没有,我道歉。

aList定义为

[24, 19, 18, 15, 15, 23, 18, 15, 18, 15]

aDict定义为

{'1': 18, '2': 76, '3': 0, '4': 13, '5': 4, '6': 30, '7': 25, '8': 21} 

和一个masterDict定义(用 0 初始化)为

{'1': 0, '2': 0, '3': 0, '4': 0, '5': 0, '6': 0, '7': 0, '8': 0}

如何检查中的每个元素是否aList与中的值匹配aDict?如果是,则将相应的键masterDict加 1?

我目前使用的代码是

for x in aList:
    for k, v in aDict.iteritems():
        if x == v:
            masterDict[k] = +1

但是,这将返回一个masterDict看起来像这样的

{'1': 1, '2': 0, '3': 0, '4': 0, '5': 0, '6': 0, '7': 0, '8': 0}

aList包含该元素的三个匹配项,18并且它与 中的一个值匹配aDict。我希望将相应的键增加masterDict三倍。但是,它只会增加一次。

我希望产生的输出是

{'1': 3, '2': 0, '3': 0, '4': 0, '5': 0, '6': 0, '7': 0, '8': 0}

标签: pythonlistdictionarypython-2.x

解决方案


这是因为您的代码中的拼写错误 - 应该masterDict[k] += 1 代替masterDict[k] = +1

更改后的输出是:{'1': 3, '2': 0, '3': 0, '4': 0, '5': 0, '6': 0, '7': 0, '8': 0}


推荐阅读