Computing the sum of all unique values in a numpy array containing rows of dicts
我有一个大的numpy数组,每一行包含一个单词的dict,其格式与下面类似:
1 | data = [{'a': 1, 'c': 2}, {'ba': 3, 'a': 4}, ... } |
有人能给我指出正确的方向吗?我该如何计算numpy数组每行中dict的所有唯一值的总和?从上面的例子中,我希望得到如下的结果:
1 | result = {'a': 5, 'c': 2, 'ba': 3, ...} |
号
目前,我能想到的唯一方法是遍历数据的每一行,然后遍历dict的每个键,如果找到唯一键,则将其附加到新dict并设置值;如果找到dict中已包含的键,则将该键的值添加到"result"中的键。尽管这似乎是一种效率低下的方法。
您可以使用
1 2 3 4 5 6 | from collections import Counter data = [{'a': 1, 'c': 2}, {'ba': 3, 'a': 4}] c = Counter() for d in data: c.update(d) |
输出:
1 | Counter({'a': 5, 'ba': 3, 'c': 2}) |
。备用一个衬里:
(由@antonvbr在评论中提出)
1 | sum((Counter(dict(x)) for x in data), Counter()) |
使用
1 2 3 4 5 6 7 8 | data = [{'a': 1, 'c': 2}, {'ba': 3, 'a': 4}] result = {} for d in data: for k, v in d.items(): if k in result: result[k] += v else: result[k] = v |
输出:
1 | {'c': 2, 'a': 5, 'ba': 3} |
号