我认为标题是正确的。如果没有,我表示歉意。
我将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}
答案 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}