按值添加700个词典:解压缩的值太多

时间:2016-01-30 04:55:40

标签: python dictionary

我有一个包含2个列表的列表,每个列表包含700个词典。

每个字典都有一个字数,我想组合它们,这样就可以添加相同键的值。

我尝试过:

combine_dicts = collections.defaultdict(int)
for k, v in itertools.chain(x.iteritems() for x in tuple(dicts[0])):
        combine_dicts[k] += v

dicts[0]dicts[1]是2个词典列表。

但它会引发以下错误:

  

ValueError:要解压的值太多。

有没有更好的方法呢?

2 个答案:

答案 0 :(得分:1)

你误用了chain;你希望chain.from_iterable链接生成器表达式的可迭代输出,而不只是将生成器函数包装为无操作:

for k, v in itertools.chain.from_iterable(x.iteritems() for x in dicts[0]):

虽然只获得list的第一个dict;为了得到这两者,我们需要MOAR CHAINING!:

# Qualifying chain over and over is a pain
from itertools import chain

for k, v in chain.from_iterable(x.iteritems() for x in chain(*dicts)):

答案 1 :(得分:0)

combine_dicts = defaultdict(int)
for i in range(0,2):
   for d in dicts[i]:
      for k,v in d.iteritems():
          combine_dicts[k] += v

这会迭代每个字典一次,因此内存使用应该是有效的。