Python 计算包含DICT行的numpy数组中所有唯一值的总和
我有一个大的numpy数组,每行包含一个单词的dict,格式与下面类似:Python 计算包含DICT行的numpy数组中所有唯一值的总和,python,Python,我有一个大的numpy数组,每行包含一个单词的dict,格式与下面类似: data = [{'a': 1, 'c': 2}, {'ba': 3, 'a': 4}, ... } 有人能给我指出正确的方向吗?我该如何计算numpy数组每一行中dict的所有唯一值之和?从上面的例子中,我希望得到如下结果: result = {'a': 5, 'c': 2, 'ba': 3, ...} 目前,我能想到的唯一方法是遍历数据的每一行,然后遍历dict的每个键,如果找到唯一键,则将其附加到新dict并设置
data = [{'a': 1, 'c': 2}, {'ba': 3, 'a': 4}, ... }
有人能给我指出正确的方向吗?我该如何计算numpy数组每一行中dict的所有唯一值之和?从上面的例子中,我希望得到如下结果:
result = {'a': 5, 'c': 2, 'ba': 3, ...}
目前,我能想到的唯一方法是遍历数据的每一行,然后遍历dict的每个键,如果找到唯一键,则将其附加到新dict并设置值,如果找到dict中已包含的键,则将该键的值添加到“result”中的键。尽管这似乎是一种低效的方法。一种使用
for循环的纯Python解决方案。
:
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
输出:
{'c': 2, 'a': 5, 'ba': 3}
一个纯Python解决方案,使用
进行循环
:
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
输出:
{'c': 2, 'a': 5, 'ba': 3}
您可以使用
计数器()
,并在循环中使用数据中包含的每个字典对其进行更新:
from collections import Counter
data = [{'a': 1, 'c': 2}, {'ba': 3, 'a': 4}]
c = Counter()
for d in data:
c.update(d)
输出:
备用班轮:
(由@AntonVBR在评论中提出)
您可以使用计数器()
,并在循环中使用数据中包含的每个字典对其进行更新:
from collections import Counter
data = [{'a': 1, 'c': 2}, {'ba': 3, 'a': 4}]
c = Counter()
for d in data:
c.update(d)
输出:
备用班轮:
(由@AntonVBR在评论中提出)
你可能想看看这里的一些想法:是否可以用它来代替?然后,这可以像sum(data,Counter())
一样简单,看起来像一个列表,而不是一个numpy数组。如果它确实是一个数组,为什么要使用数组来保存dicts?您可能想看看这里的一些想法:是否可以使用它来代替?然后,这可以像sum(data,Counter())
一样简单,看起来像一个列表,而不是一个numpy数组。如果它确实是一个数组,为什么要使用数组来保存dict?可以这样写在一行中:sum((Counter(dict(x))表示数据中的x),Counter())
依据可以这样写在一行中:sum((Counter(dict(x))表示数据中的x),Counter())
依据