如何计算字典元素的频率并删除python列表中的重复字典元素?

我有一个列表,列表中的元素是一个dict类型.

例如,

da_list = [
    {'Surface':'APPLE','BaseForm':'apple','PN':0.5},
    {'Surface':'BANANA','BaseForm':'banana','PN':0.4},
    {'Surface':'ORANGE','BaseForm':'orange','PN':-0.1},
    {'Surface':'APPLE','BaseForm':'apple','PN':0.5},
    {'Surface':'BANANA','BaseForm':'banana','PN':0.4} 
]

我想定义一个名为db_list的新列表.
db_list存储dict元素喜欢这样:

db_list = [
    {'Surface':'APPLE','BaseForm':'apple','PN':0.5,'Frequency':2},
    {'Surface':'BANANA','BaseForm':'banana','PN':0.4,'Frequency':2},
    {'Surface':'ORANGE','BaseForm':'orange','PN':-0.1,'Frequency':1} 
]

db_list删除da_list中的重复元素,并添加每个字典的频率.

这该怎么做?

最佳答案
您还可以将计数器与列表理解一起使用

from collections import Counter
>>> [dict(k + (('frequency', v),)) for k,v in Counter(tuple(k.items()) for k in da_list).items()]

[{'Surface': 'APPLE', 'BaseForm': 'apple', 'PN': 0.5, 'frequency': 2},
 {'Surface': 'BANANA', 'BaseForm': 'banana', 'PN': 0.4, 'frequency': 2},
 {'Surface': 'ORANGE', 'BaseForm': 'orange', 'PN': -0.1, 'frequency': 1}]

转载注明原文:如何计算字典元素的频率并删除python列表中的重复字典元素? - 代码日志