遍历列表和嵌套字典
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}
我认为标题是正确的。如果不是,我很抱歉。
我将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}