Computer >> Máy Tính >  >> Lập trình >> Python

Tìm các khóa có giá trị trùng lặp trong từ điển bằng Python

Trong khi xử lý từ điển, chúng ta có thể gặp tình huống có các giá trị trùng lặp trong từ điển trong khi rõ ràng các khóa vẫn là duy nhất. Trong bài viết này, chúng ta sẽ xem cách chúng ta có thể đạt được điều đó.

Trao đổi khóa và giá trị

Chúng tôi trao đổi các khóa với các giá trị của từ điển và sau đó tiếp tục bổ sung các giá trị được liên kết với một khóa nhất định. Bằng cách này, các giá trị trùng lặp sẽ được xếp vào nhóm và chúng ta có thể thấy chúng trong từ điển mới.

Ví dụ

dictA = {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 3}

print("Given Dictionary :", dictA)

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)

# Result
print("New Dictionary:", k_v_exchanged)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given Dictionary : {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 3}
New Dictionary: {5: ['Sun', 'Tue'], 3: ['Mon', 'Wed']}

Với bộ

chúng tôi làm theo một cách tiếp cận tương tự ở đây. Ở đây, chúng tôi cũng tạo một từ điển mới từ từ điển hiện có bằng cách sử dụng chức năng đặt và thêm các khóa có giá trị trùng lặp. Cuối cùng, chúng tôi lọc ra các giá trị có độ dài lớn hơn 1 và đánh dấu chúng là trùng lặp.

Ví dụ

dictA = {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 4}

print("Given Dictionary :", dictA)

dictB = {}
for key, value in dictA.items():
   dictB.setdefault(value, set()).add(key)

res = filter(lambda x: len(x) >1, dictB.values())

# Result
print("New Dictionary:",list(res))

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given Dictionary : {'Sun': 5, 'Mon': 3, 'Tue': 5, 'Wed': 4}
New Dictionary: [{'Tue', 'Sun'}]