2009-03-17 47 views
13

LinkedHashMap là việc triển khai Java của cấu trúc dữ liệu như Hashtable (dict in Python) với thứ tự lặp có thể dự đoán được. Điều đó có nghĩa là trong quá trình truyền tải qua tất cả các khóa, chúng được sắp xếp theo cách chèn. Điều này được thực hiện bởi một danh sách liên kết bổ sung duy trì thứ tự chèn.Tương đương với LinkedHashMap trong Python

Có tương đương với điều đó trong Python không?

Trả lời

10

Mặc dù bạn có thể làm điều tương tự bằng cách duy trì danh sách để theo dõi thứ tự chèn, Python 2.7Python >=3.1 có một lớp OrderedDict trong mô-đun bộ sưu tập.

Trước 2.7, bạn có thể phân lớp dictfollowing this recipe.

+0

OrderedDict đến bằng Python 3.1, nhưng chưa có trong 3.0, theo tài liệu bạn đã liên kết. – kquinn

+0

Vâng, bạn nói đúng, tôi đã bỏ qua điều đó. Đã chỉnh sửa. – sykora

1

Tôi không nghĩ vậy; bạn sẽ phải sử dụng một dict cộng với một danh sách. Nhưng bạn có thể dễ dàng bọc nó trong một lớp, và xác định keys, __getitem__, __setitem__, v.v. để làm cho nó hoạt động theo cách bạn muốn.

2

Tôi không chắc chắn cho dù đây là những gì bạn đang yêu cầu:

>>> dic = {1: 'one', 2: 'two'} 
>>> for k, v in dic.iteritems(): 
...  print k, v 

bạn có thể đặt các dic theo thứ tự chèn sử dụng ordereddict module.

d = ordereddict(dic, relax=True) 
+0

Tôi không nghĩ rằng '' dict.iteritems'' cung cấp thứ tự dựa trên thứ tự chèn ... – sykora

+0

Đúng! Bạn phải sử dụng mô-đun orderdict cho điều đó. – aatifh

Các vấn đề liên quan