Python 仅创建组的最大公共配对字典

Python 仅创建组的最大公共配对字典,python,dictionary,Python,Dictionary,我想创建一个最大公共配对字典——一个“协议”表。在查找协议时,是否可以将代码缩短一点?到目前为止,我并不真正喜欢找到最大计数,然后在计数上匹配以找到“协议” 输出: [{'A':[1]},{'B':[2]}]您可以构建一个dict,将每个id映射到一个值列表,然后使用集合.Counter。most_common方法为每个id获取最常用的值: from collections import Counter d = {'id': ['A', 'A', 'B', 'B', 'B', 'B'], 'va

我想创建一个最大公共配对字典——一个“协议”表。在查找协议时,是否可以将代码缩短一点?到目前为止,我并不真正喜欢找到最大计数,然后在计数上匹配以找到“协议”

输出:
[{'A':[1]},{'B':[2]}]

您可以构建一个dict,将每个
id
映射到一个值列表,然后使用
集合.Counter。most_common
方法为每个
id
获取最常用的值:

from collections import Counter
d = {'id': ['A', 'A', 'B', 'B', 'B', 'B'], 'value': [1, 1, 2, 2, 1, 2]}
mapping = {}
for k, v in zip(d['id'], d['value']):
    mapping.setdefault(k, []).append(v)
print({k: Counter(l).most_common(1)[0][0] for k, l in mapping.items()})
这将产生:

{'A': 1, 'B': 2}

如果绕过熊猫部分,输入是什么?两张名单?对不起,我会澄清的。如果可能的话,我想跳过分组等等,或者在查找协议时至少缩短一点代码。
{'A': 1, 'B': 2}