我正在尝试从具有相同值的 python 字典中获取所有键。作为其中的一部分,我做了以下尝试并且它有效。但检查是否有更简洁的方法来做到这一点。 我已经完成了线程在Python字典中查找具有相同值的所有键
b = {'a1': ['b1', 'b2', 'b3'],
'a2': ['b1', 'b2', 'b3'],
'a3': ['b4', 'b5', 'b6'],
'a4': ['b4', 'b5', 'b6']
}
c = []
for i in b.values():
if i not in c:
c.append(i)
f = list()
for i in c:
print(i)
e = [k for k, v in b.items() if v == i]
print(e)
f.append((i, e))
print(f)
输出为:
[(['a1', 'a2'], ['b1', 'b2', 'b3']), (['a3', 'a4'], ['b4', 'b5', 'b6'])]
假设字典的所有值都是picklable,您可以使用pickled值作为键来创建一个反向映射,映射到具有相同值的键列表:
import pickle
dupes = {}
for key, value in b.items():
dupes.setdefault(pickle.dumps(value), []).append(key)
print([(keys, pickle.loads(value)) for value, keys in dupes.items()])
输出:
[(['a1', 'a2'], ['b1', 'b2', 'b3']), (['a3', 'a4'], ['b4', 'b5', 'b6'])]
演示这里