通过循环遍历列表来创建字典只会生成最后一个列表的元素

时间:2016-12-02 10:54:03

标签: python loops dictionary

我正在尝试构建一个字典(= results),它循环一个名字列表(= namelist,strings)并给我一个名称A(名字B等等)在列表中提到了几篇文章( =文章,字符串)。

我的代码如下:

import csv
results={}

for elements in namelist:
    for article in articles:
        list_namecounts = len(re.findall(element,article))
        results[article]=[element, list_namecounts]

但是,它不是为namelist中的每个元素返回包含所有namecounts的字典,而是仅生成包含最后一个元素的字典,因此使用姓氏。

有人建议如何在我的代码中解决这个问题?

1 个答案:

答案 0 :(得分:0)

我想这是因为你在每次循环迭代时都会覆盖元素。 为避免这种情况,您可以使用defaultdict列表作为默认值。 然后,您可以将值附加到列表中而不是覆盖:

from collections import defaultdict
result = defaultdict(list)
for elements in namelist:
    for article in articles:
        list_namecounts = len(re.findall(element,article))
        results[article].append([element, list_namecounts])