如何对列表内的python字典中每个特定键的值进行计数
my_dict = [{"a":1},{"b":4},{"a":7},{"a":30},{"b":78}]
预期结果应该是:
new_dict=[{"a":3},{"b":2}]
答案 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}