遍历列表和嵌套字典

时间:2018-10-20 18:42:16

标签: python list dictionary python-2.x

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

我将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定义(以0s初始化)为

{'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中的对应键增加3次。但是,它仅递增一次。

我想要产生的输出是

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

2 个答案:

答案 0 :(得分:1)

这是因为您的代码中有错字-应该为masterDict[k] += 1 而不是masterDict[k] = +1

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

答案 1 :(得分:0)

您只能在k中使用dct,如果密钥产生的值与lst中的项匹配,则将k中的mst增加1

mstr = {'1': 0, '2': 0, '3': 0, '4': 0, '5': 0, '6': 0, '7': 0, '8': 0}
dct = {'1': 18, '2': 76, '3': 0, '4': 13, '5': 4, '6': 30, '7': 25, '8': 21}
lst = [24, 19, 18, 15, 15, 23, 18, 15, 18, 15]

for i in lst:
    for k in dct:
        if dct[k] == i:
            mstr[k] += 1

print(mstr)
# {'1': 3, '2': 0, '3': 0, '4': 0, '5': 0, '6': 0, '7': 0, '8': 0}