Collections.counter计算字典值并保留其他对?

时间:2018-02-15 15:38:20

标签: python

我试图计算一个重复发生的字典,我可以用Counter成功完成,但是我需要将第二个密钥对保存在同一个字典中。

希望样本有用:

>>>conns = {'circuit_type': 'MPLS', 'priority': 1}, {'circuit_type': 'MPLS', 'priority': 1}, {'circuit_type': '4G', 'priority': 4},...
>>>Counter(t['circuit_type'] for t in conns)
Counter({'MPLS': 63, 'Down': 14, '4G': 1, 'DSL': 1})

我需要的是一个完全重新出现的列表,其相应的优先级彼此相邻:

[{'MPLS': 63, 'priority': 1}, {'Down': 14,'priority': 10},{'4G': 1,'priority': 3},{'DSL': 1', priority': 2}]

[{'type': 'MPLS', 'count' : 63, 'priority': 1}, {'type': 'Down', 'count' : 14, 'priority': 10}, {'type': '4G', 'count': 1,'priority': 3},{'type': 'DSL', 'count': 1, 'priority': 2}]

1 个答案:

答案 0 :(得分:2)

只需在conns中提取每个元素的相关部分,然后使用计数器:

collections.Counter(((d['circuit_type'], d['priority']) for d in conns))

返回

Counter({('4G', 4): 1, ('MPLS', 1): 2})