Trong khi sử dụng từ điển Python, chúng ta có thể cần xác định từng phần tử của từ điển duy nhất. Để làm được điều đó, chúng ta phải gán các ID duy nhất cho từng phần tử trong từ điển. Trong bài viết này, chúng ta sẽ xem cách gán cùng một Id duy nhất cho một phần tử nếu nó được lặp lại trong từ điển Python.
Với enumerate () và OrderedDict.fromkeys ()
Hàm liệt kê mở rộng một từ điển nhất định bằng cách thêm bộ đếm vào từng phần tử của từ điển. Sau đó, chúng tôi áp dụng OrderedDict.fromkeys () sẽ trích xuất cùng một giá trị của bộ đếm từ từ điển, do đó loại bỏ các giá trị trùng lặp của ID.
Ví dụ
from collections import OrderedDict Alist = ['Mon','Tue','Wed','Mon',5,3,3] print("The given list : ",Alist) # Assigning ids to values list_ids = [{v: k for k, v in enumerate( OrderedDict.fromkeys(Alist))} [n] for n in Alist] # The result print("The list of ids : ",list_ids)
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
The given list : ['Mon', 'Tue', 'Wed', 'Mon', 5, 3, 3] The list of ids : [0, 1, 2, 0, 3, 4, 4]
Sử dụng OrderedDict từ các bộ sưu tập
Trong phương pháp này, chúng tôi sử dụng hàm defaultdict chỉ gán một khóa mới cho các phần tử mới. Sau đó, chúng tôi sử dụng hàm lambda để lặp qua danh sách các Id duy nhất mới.
Ví dụ
from collections import defaultdict # Given List Alist = ['Mon','Tue','Wed','Mon',5,3,3] print("The given list : ",Alist) # Assigning ids to values d_dict = defaultdict(lambda: len(d_dict)) list_ids= [d_dict[n] for n in Alist] # Print ids of the dictionary print("The list of ids : ", list_ids)
Đầu ra
Chạy đoạn mã trên cho chúng ta kết quả sau -
The given list : ['Mon', 'Tue', 'Wed', 'Mon', 5, 3, 3] The list of ids : [0, 1, 2, 0, 3, 4, 4]