Hướng dẫn are python dictionary keys ordered? - các khóa từ điển python có được đặt hàng không?

Code:

d = {'a': 0, 'b': 1, 'c': 2}
l = d.keys()

print l

Bản in này ['a', 'c', 'b']. Tôi không chắc chắn làm thế nào phương thức keys() xác định thứ tự của các từ khóa trong l. Tuy nhiên, tôi muốn có thể lấy lại các từ khóa theo thứ tự "thích hợp". Thứ tự thích hợp tất nhiên sẽ tạo ra danh sách ['a', 'b', 'c'].l. However, I'd like to be able to retrive the keywords in the "proper" order. The proper order of course would create the list ['a', 'b', 'c'].

Hướng dẫn are python dictionary keys ordered? - các khóa từ điển python có được đặt hàng không?

Hỏi ngày 12 tháng 4 năm 2011 lúc 0:21Apr 12, 2011 at 0:21

hình chữ nhậtrectangletangle

48.5K91 Huy hiệu vàng199 Huy hiệu bạc273 Huy hiệu Đồng91 gold badges199 silver badges273 bronze badges

8

Python 3.7+

Trong Python 3.7.0 Bản chất bảo quản đặt hàng chèn của các đối tượng dict đã được tuyên bố là một phần chính thức của thông số ngôn ngữ Python. Do đó, bạn có thể phụ thuộc vào nó.

Python 3.6 (CPython)

Kể từ Python 3.6, đối với việc triển khai Python CPython, từ điển duy trì thứ tự chèn theo mặc định. Đây được coi là một chi tiết thực hiện mặc dù; Bạn vẫn nên sử dụng collections.OrderedDict nếu bạn muốn đặt hàng chèn được đảm bảo trong các triển khai khác của Python.

Python> = 2.7 và

Sử dụng lớp collections.OrderedDict khi bạn cần dict nhớ thứ tự các mục được chèn.

Đã trả lời ngày 12 tháng 10 năm 2016 lúc 19:51Oct 12, 2016 at 19:51

Eugene Yarmasheugene YarmashEugene Yarmash

136K39 Huy hiệu vàng313 Huy hiệu bạc369 Huy hiệu đồng39 gold badges313 silver badges369 bronze badges

0

Bạn có thể sử dụng OrderedDict (yêu cầu Python 2.7) hoặc cao hơn.

Ngoài ra, lưu ý rằng

>>> print sorted(d.keys())
['a', 'b', 'c']
1 sẽ không hoạt động vì dict bạn tạo với
>>> print sorted(d.keys())
['a', 'b', 'c']
3 đã quên thứ tự của các yếu tố. Thay vào đó, bạn muốn sử dụng
>>> print sorted(d.keys())
['a', 'b', 'c']
4.

Như đã đề cập trong tài liệu, đối với các phiên bản thấp hơn Python 2.7, bạn có thể sử dụng công thức này.

Đã trả lời ngày 12 tháng 4 năm 2011 lúc 0:25Apr 12, 2011 at 0:25

Abhinav Guptaabhinav GuptaAbhinav Gupta

4.5102 Huy hiệu vàng22 Huy hiệu bạc18 Huy hiệu Đồng2 gold badges22 silver badges18 bronze badges

3

>>> print sorted(d.keys())
['a', 'b', 'c']

Sử dụng hàm được sắp xếp, sắp xếp các điều đó được thông qua.

Phương thức

>>> print sorted(d.keys())
['a', 'b', 'c']
5 trả về các khóa theo thứ tự tùy ý.

Đã trả lời ngày 12 tháng 4 năm 2011 lúc 0:25Apr 12, 2011 at 0:25

Abhinav Guptaabhinav GuptaMike Lewis

4.5102 Huy hiệu vàng22 Huy hiệu bạc18 Huy hiệu Đồng20 gold badges140 silver badges111 bronze badges

2

Sử dụng hàm được sắp xếp, sắp xếp các điều đó được thông qua.

Phương thức

>>> print sorted(d.keys())
['a', 'b', 'c']
5 trả về các khóa theo thứ tự tùy ý.

Đã trả lời ngày 12 tháng 4 năm 2011 lúc 0:25Apr 12, 2011 at 0:25

1

Abhinav Guptaabhinav Gupta

l = sorted(d.keys())

4.5102 Huy hiệu vàng22 Huy hiệu bạc18 Huy hiệu ĐồngApr 12, 2011 at 0:24

Sử dụng hàm được sắp xếp, sắp xếp các điều đó được thông qua.Drew

Phương thức

>>> print sorted(d.keys())
['a', 'b', 'c']
5 trả về các khóa theo thứ tự tùy ý.20 silver badges16 bronze badges

Mike Lewismike Lewis

s = 'abbc'
a = 'cbab'

def load_dict(s):
    dict_tmp = {}
    for ch in s:
        if ch in dict_tmp.keys():
            dict_tmp[ch]+=1
        else:
            dict_tmp[ch] = 1
    return dict_tmp

dict_a = load_dict(a)
dict_s = load_dict(s)
print('for string %s, the keys are %s'%(s, dict_s.keys()))
print('for string %s, the keys are %s'%(a, dict_a.keys()))

62.5K20 Huy hiệu vàng140 Huy hiệu bạc111 Huy hiệu đồng
for string abbc, the keys are dict_keys(['a', 'b', 'c'])
for string cbab, the keys are dict_keys(['c', 'b', 'a'])

Từ http://docs.python.org/tutorial/datcate.html:

"Phương thức () Phương thức của một đối tượng từ điển trả về một danh sách tất cả các khóa được sử dụng trong từ điển, theo thứ tự tùy ý (nếu bạn muốn nó được sắp xếp, chỉ cần áp dụng hàm Sắp xếp () cho nó)."6 silver badges11 bronze badges

Chỉ cần sắp xếp danh sách khi bạn muốn sử dụng nó.Feb 8, 2019 at 19:21

Đã trả lời ngày 12 tháng 4 năm 2011 lúc 0:24zehai

Đã vẽ3 bronze badges

1