如何计算列表中的python字典中每个特定键的值

时间:2018-08-31 10:56:11

标签: python

如何对列表内的python字典中每个特定键的值进行计数

my_dict = [{"a":1},{"b":4},{"a":7},{"a":30},{"b":78}]

预期结果应该是:

new_dict=[{"a":3},{"b":2}]

4 个答案:

答案 0 :(得分:1)

尝试Counter-

from collections import Counter
my_dict = [{"a":1},{"b":4},{"a":7},{"a":30},{"b":78}]
new_dict = [{k:v} for k,v in Counter([i.keys()[0] for i in my_dict]).items()]

对于python3,keys()已更改,请使用list(keys())

new_dict = [{k:v} for k,v in Counter([list(i.keys())[0] for i in my_dict]).items()]

答案 1 :(得分:0)

使用collections.defaultdict

例如:

from collections import defaultdict

d = defaultdict(int)
l = [{"a":1},{"b":4},{"a":7},{"a":30},{"b":78}]
for i in l:
    val = list(i.items())[0]
    d[val[0]] += 1
print(d)

输出:

defaultdict(<type 'int'>, {'a': 3, 'b': 2})

答案 2 :(得分:0)

这通常是holder.delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dbreference.child("books").child(bookId).remove(); } }); Counter的工作。在这种情况下,由于collections是不可散列的,因此我们必须稍微修改输入。

dict

答案 3 :(得分:0)

我正在发布一个非常简单的解决方案:

>>> my_dict = [{"a":1},{"b":4},{"a":7},{"a":30},{"b":78}]
>>> new_dict = {}
>>> for value in my_dict:
...     for x in value:
...         new_dict[x] = new_dict.get(x,0) + 1
... 
>>> new_dict
{'a': 3, 'b': 2}