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

Gán id cho từng giá trị duy nhất trong danh sách Python

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]