我试图计算一个重复发生的字典,我可以用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}]
答案 0 :(得分:2)
只需在conns
中提取每个元素的相关部分,然后使用计数器:
collections.Counter(((d['circuit_type'], d['priority']) for d in conns))
返回
Counter({('4G', 4): 1, ('MPLS', 1): 2})