遍历列表和嵌套字典

Looping over a list and a nested dictionary

我认为标题是正确的。如果不是,我很抱歉。

我将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}

您可以只使用 k in dct,如果键产生的值与 lst 中的项目匹配,则增加 mst 中的 k通过 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}

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

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