在列表和嵌套字典上循环

2024-06-16 14:16:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我把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中相应的键递增三次。但是,它只增加一次

我要生产的产品是

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

Tags: 代码in元素标题forif定义产品
2条回答

您可以只使用dct中的k,如果键生成的值与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}

相关问题 更多 >