Khi làm việc với dictionary, có thể gặp tình huống nhiều key cùng trỏ đến một giá trị (duplicate values). Bài viết chỉ cách nhóm các key theo giá trị trùng lặp.
Cách 1: Đảo key-value và gom nhóm
Tạo dictionary mới với key là giá trị cũ, value là list các key cũ.
dictA = {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 3}
k_v_exchanged = {}
for key, value in dictA.items():
if value not in k_v_exchanged:
k_v_exchanged[value] = [key]
else:
k_v_exchanged[value].append(key)
print("New Dictionary:", k_v_exchanged) # {5: ['Sun', 'Tue'], 3: ['Mon', 'Wed']}
Cách 2: Sử dụng set()
Dùng setdefault với set, sau đó lọc các set có kích thước > 1.
dictA = {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 4}
dictB = {}
for key, value in dictA.items():
dictB.setdefault(value, set()).add(key)
res = filter(lambda x: len(x) > 1, dictB.values())
print("Duplicate value keys:", list(res)) # [{'Tue', 'Sun'}]