Cập nhật: kể từ Python 3.7, thứ tự chèn được duy trì, vì vậy bạn không cần OrderedDict
ở đây. Bạn có thể sử dụng các cách tiếp cận dưới đây với bình thườngdict
Thay đổi trong phiên bản 3.7: Thứ tự từ điển được đảm bảo là thứ tự chèn. Hành vi này là một chi tiết triển khai của CPython từ 3.6.
nguồn
Python 3.6 trở về trước *
Nếu bạn đang nói về một thông thường dict
, thì "khóa đầu tiên" không có nghĩa gì cả. Các phím không được sắp xếp theo bất kỳ cách nào bạn có thể phụ thuộc vào. Nếu bạn lặp đi lặp lại, dict
bạn có thể sẽ không nhận được "banana"
như điều đầu tiên bạn nhìn thấy.
Nếu bạn cần giữ mọi thứ theo thứ tự, thì bạn phải sử dụng OrderedDict
và không chỉ là một từ điển đơn giản.
import collections
prices = collections.OrderedDict([
("banana", 4),
("apple", 2),
("orange", 1.5),
("pear", 3),
])
Nếu sau đó bạn muốn xem tất cả các phím theo thứ tự bạn có thể làm như vậy bằng cách lặp qua nó
for k in prices:
print(k)
Bạn có thể, thay vào đó, đặt tất cả các khóa vào một danh sách và sau đó làm việc với nó
ks = list(prices)
print(ks[0]) # will print "banana"
Một cách nhanh hơn để có được phần tử đầu tiên mà không tạo danh sách sẽ là gọi next
trên iterator. Điều này không khái quát độc đáo khi cố gắng để có được nth
yếu tố mặc dù
>>> next(iter(prices))
'banana'
* CPython đã đảm bảo thứ tự chèn như một chi tiết triển khai trong 3.6.