gpt4 book ai didi

python - 返回值重复的键

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:40 24 4
gpt4 key购买 nike

我有一个字典,其键值是列表。每个列表可能包含一些像这样重复多次的值

{'VSS': ['A2', 'A3', 'A1'], 'X_P1_1': ['A2', 'A1'], 'X_P2': ['A3', 'A2'], 'X_P1_3': ['A2', 'A1'], 'VDD': ['A3', 'A3', 'A3', 'A3', 'A3', 'A3', 'A3', 'B', 'A3'], 'X': ['B', 'A1', 'A1', 'A1', 'A1', 'A1', 'A1', 'A1', 'B', 'A1']}

我想循环获取值频率大于 1 的键例如:

VDD: ['A3':8]
X : ['A1':8, 'B':2]

如何做到这一点?

最佳答案

你可以使用 Counter :

from collections import Counter

data = {'VSS': ['A2', 'A3', 'A1'], 'X_P1_1': ['A2', 'A1'], 'X_P2': ['A3', 'A2'], 'X_P1_3': ['A2', 'A1'], 'VDD': ['A3', 'A3', 'A3', 'A3', 'A3', 'A3', 'A3', 'B', 'A3'], 'X': ['B', 'A1', 'A1', 'A1', 'A1', 'A1', 'A1', 'A1', 'B', 'A1']}


result = {key : { e: count for e, count in Counter(values).items() if count > 1} for key, values in data.items() if any(value > 1 for value in Counter(values).values())}

print(result)

输出

{'VDD': {'A3': 8}, 'X': {'B': 2, 'A1': 8}}

或者如果您更喜欢将值作为元组列表:

from collections import Counter

data = {'VSS': ['A2', 'A3', 'A1'], 'X_P1_1': ['A2', 'A1'], 'X_P2': ['A3', 'A2'], 'X_P1_3': ['A2', 'A1'],
'VDD': ['A3', 'A3', 'A3', 'A3', 'A3', 'A3', 'A3', 'B', 'A3'],
'X': ['B', 'A1', 'A1', 'A1', 'A1', 'A1', 'A1', 'A1', 'B', 'A1']}

result = {key: [(element, count) for element, count in counts.items() if count > 1] for key, counts in map(lambda x: (x[0], Counter(x[1])), data.items()) if
any(count > 1 for count in counts.values())}
print(result)

输出

{'VDD': [('A3', 8)], 'X': [('A1', 8), ('B', 2)]}

关于python - 返回值重复的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53254661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com