根据一个词典列表中的键创建一个新的词典列表

时间:2017-03-23 18:50:43

标签: python python-2.7 list dictionary sum

我对python编程很陌生。 我想基于键name创建一个新的词典列表。如果name相等,则为id值。

a = [{'id': 1, 'name': 'paul'},{'id': 2, 'name': 'john'},{'id': 3, 'name': 'john'},{'id': 4, 'name': 'john'}]

新列表如下:

new_a = [{'id': 1, 'name': 'paul'},{'id': 9, 'name': 'john'}]

提前致谢!

2 个答案:

答案 0 :(得分:1)

您可以使用Counter进行转换,然后进行一些转换,例如:

from collections import Counter

ctr = Counter()
for dic in a:
    ctr[dic['name']] += dic['id']
new_a = [{'name': name, 'id': id} for name,id in ctr.iteritems()]

这会产生:

>>> new_a
[{'name': 'paul', 'id': 1}, {'name': 'john', 'id': 9}]

请注意,列表的顺序未确定

答案 1 :(得分:1)

此代码也会按照您的要求执行,但是,我认为不同的数据结构设置可能会做得更好。

trait