Từ điển trong Python có được đặt hàng hay không?

Các đối tượng `dict` của Python hiện duy trì thứ tự chèn trong triển khai CPython tham chiếu — nhưng việc dựa vào thuộc tính đó rất rủi ro

Cho đến gần đây, từ điển Python không giữ nguyên thứ tự các mục được thêm vào chúng. Chẳng hạn, bạn có thể gõ

In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
4 và nhận lại
In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
5. Nếu bạn muốn một từ điển giữ nguyên trật tự, bạn có thể sử dụng lớp
In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
6 trong mô-đun thư viện tiêu chuẩn
In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
7

Tuy nhiên, tình trạng này đang thay đổi. Các đối tượng

In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
8 tiêu chuẩn bảo toàn thứ tự trong triển khai tham chiếu (CPython) của Python 3. 5 và 3. 6 và thuộc tính giữ nguyên thứ tự này đang trở thành một tính năng ngôn ngữ trong Python 3. 7

Bạn có thể nghĩ rằng sự thay đổi này khiến lớp

In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
6 trở nên lỗi thời. Tuy nhiên, có ít nhất hai lý do chính đáng để tiếp tục sử dụng
In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
6. Đầu tiên, việc dựa vào các đối tượng
In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
8 tiêu chuẩn để duy trì trật tự sẽ khiến mã của bạn bị hỏng trên các phiên bản CPython sớm hơn 3. 5 và trên một số triển khai thay thế của Python 3. 5 và 3. 6. Thứ hai, việc sử dụng
In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
6 truyền đạt ý định của bạn dựa trên thứ tự các mục trong từ điển của bạn được bảo tồn, cho cả người đọc mã của bạn và thư viện bên thứ ba mà bạn gọi trong đó

Trên thực tế, một số công cụ được sử dụng rộng rãi trong khoa học dữ liệu giả định rằng thứ tự của các mục trong

In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
8 là không đáng kể

IPython giả định rằng thứ tự
In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
8 không thành vấn đề

Xem xét ví dụ này phiên

In [5]: from collections import OrderedDict

In [6]: my_ordered_dict = OrderedDict([(letter, [1]) for letter in ascii_lowercase[::-1]])

In [7]: print(my_ordered_dict)
OrderedDict([('z', [1]), ('y', [1]), ('x', [1]), ('w', [1]), ('v', [1]), ('u', [1]), ('t', [1]), ('s', [1]), ('r', [1]), ('q', [1]), ('p', [1]), ('o', [1]), ('n', [1]), ('m', [1]), ('l', [1]), ('k', [1]), ('j', [1]), ('i', [1]), ('h', [1]), ('g', [1]), ('f', [1]), ('e', [1]), ('d', [1]), ('c', [1]), ('b', [1]), ('a', [1])])

In [8]: my_ordered_dict
Out[8]:
OrderedDict([('z', [1]),
('y', [1]),
('x', [1]),
('w', [1]),
('v', [1]),
('u', [1]),
('t', [1]),
('s', [1]),
('r', [1]),
('q', [1]),
('p', [1]),
('o', [1]),
('n', [1]),
('m', [1]),
('l', [1]),
('k', [1]),
('j', [1]),
('i', [1]),
('h', [1]),
('g', [1]),
('f', [1]),
('e', [1]),
('d', [1]),
('c', [1]),
('b', [1]),
('a', [1])])
5

In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}

Ở đây có vẻ như

In [5]: from collections import OrderedDict

In [6]: my_ordered_dict = OrderedDict([(letter, [1]) for letter in ascii_lowercase[::-1]])

In [7]: print(my_ordered_dict)
OrderedDict([('z', [1]), ('y', [1]), ('x', [1]), ('w', [1]), ('v', [1]), ('u', [1]), ('t', [1]), ('s', [1]), ('r', [1]), ('q', [1]), ('p', [1]), ('o', [1]), ('n', [1]), ('m', [1]), ('l', [1]), ('k', [1]), ('j', [1]), ('i', [1]), ('h', [1]), ('g', [1]), ('f', [1]), ('e', [1]), ('d', [1]), ('c', [1]), ('b', [1]), ('a', [1])])

In [8]: my_ordered_dict
Out[8]:
OrderedDict([('z', [1]),
('y', [1]),
('x', [1]),
('w', [1]),
('v', [1]),
('u', [1]),
('t', [1]),
('s', [1]),
('r', [1]),
('q', [1]),
('p', [1]),
('o', [1]),
('n', [1]),
('m', [1]),
('l', [1]),
('k', [1]),
('j', [1]),
('i', [1]),
('h', [1]),
('g', [1]),
('f', [1]),
('e', [1]),
('d', [1]),
('c', [1]),
('b', [1]),
('a', [1])])
6 trên thực tế không duy trì trật tự một cách nhất quán. Tuy nhiên, điều đang thực sự xảy ra là nhân
In [5]: from collections import OrderedDict

In [6]: my_ordered_dict = OrderedDict([(letter, [1]) for letter in ascii_lowercase[::-1]])

In [7]: print(my_ordered_dict)
OrderedDict([('z', [1]), ('y', [1]), ('x', [1]), ('w', [1]), ('v', [1]), ('u', [1]), ('t', [1]), ('s', [1]), ('r', [1]), ('q', [1]), ('p', [1]), ('o', [1]), ('n', [1]), ('m', [1]), ('l', [1]), ('k', [1]), ('j', [1]), ('i', [1]), ('h', [1]), ('g', [1]), ('f', [1]), ('e', [1]), ('d', [1]), ('c', [1]), ('b', [1]), ('a', [1])])

In [8]: my_ordered_dict
Out[8]:
OrderedDict([('z', [1]),
('y', [1]),
('x', [1]),
('w', [1]),
('v', [1]),
('u', [1]),
('t', [1]),
('s', [1]),
('r', [1]),
('q', [1]),
('p', [1]),
('o', [1]),
('n', [1]),
('m', [1]),
('l', [1]),
('k', [1]),
('j', [1]),
('i', [1]),
('h', [1]),
('g', [1]),
('f', [1]),
('e', [1]),
('d', [1]),
('c', [1]),
('b', [1]),
('a', [1])])
5 sắp xếp các khóa từ điển để hiển thị khi từ điển được đánh giá. Nó giả định rằng thứ tự của các mục trong một đối tượng
In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
8 là không đáng kể. Ngược lại, nó không sắp xếp các phím trong một
In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
6

In [5]: from collections import OrderedDict

In [6]: my_ordered_dict = OrderedDict([(letter, [1]) for letter in ascii_lowercase[::-1]])

In [7]: print(my_ordered_dict)
OrderedDict([('z', [1]), ('y', [1]), ('x', [1]), ('w', [1]), ('v', [1]), ('u', [1]), ('t', [1]), ('s', [1]), ('r', [1]), ('q', [1]), ('p', [1]), ('o', [1]), ('n', [1]), ('m', [1]), ('l', [1]), ('k', [1]), ('j', [1]), ('i', [1]), ('h', [1]), ('g', [1]), ('f', [1]), ('e', [1]), ('d', [1]), ('c', [1]), ('b', [1]), ('a', [1])])

In [8]: my_ordered_dict
Out[8]:
OrderedDict([('z', [1]),
('y', [1]),
('x', [1]),
('w', [1]),
('v', [1]),
('u', [1]),
('t', [1]),
('s', [1]),
('r', [1]),
('q', [1]),
('p', [1]),
('o', [1]),
('n', [1]),
('m', [1]),
('l', [1]),
('k', [1]),
('j', [1]),
('i', [1]),
('h', [1]),
('g', [1]),
('f', [1]),
('e', [1]),
('d', [1]),
('c', [1]),
('b', [1]),
('a', [1])])

(Phần liên quan của mã

In [5]: from collections import OrderedDict

In [6]: my_ordered_dict = OrderedDict([(letter, [1]) for letter in ascii_lowercase[::-1]])

In [7]: print(my_ordered_dict)
OrderedDict([('z', [1]), ('y', [1]), ('x', [1]), ('w', [1]), ('v', [1]), ('u', [1]), ('t', [1]), ('s', [1]), ('r', [1]), ('q', [1]), ('p', [1]), ('o', [1]), ('n', [1]), ('m', [1]), ('l', [1]), ('k', [1]), ('j', [1]), ('i', [1]), ('h', [1]), ('g', [1]), ('f', [1]), ('e', [1]), ('d', [1]), ('c', [1]), ('b', [1]), ('a', [1])])

In [8]: my_ordered_dict
Out[8]:
OrderedDict([('z', [1]),
('y', [1]),
('x', [1]),
('w', [1]),
('v', [1]),
('u', [1]),
('t', [1]),
('s', [1]),
('r', [1]),
('q', [1]),
('p', [1]),
('o', [1]),
('n', [1]),
('m', [1]),
('l', [1]),
('k', [1]),
('j', [1]),
('i', [1]),
('h', [1]),
('g', [1]),
('f', [1]),
('e', [1]),
('d', [1]),
('c', [1]),
('b', [1]),
('a', [1])])
5 nằm trong hàm _dict_pprinter_factory của nó. )

Gấu trúc cho rằng thứ tự ________ 18 không thành vấn đề

Cập nhật.

In [9]: import pandas as pd

In [10]: pd.DataFrame(my_dict)
Out[10]:
a b c d e f g h i j .. q r s t u v w x y z
0 1 1 1 1 1 1 1 1 1 1 .. 1 1 1 1 1 1 1 1 1 1

[1 rows x 26 columns]
2 (phát hành ngày 15 tháng 5 năm 2018) tôn trọng thứ tự khi khởi tạo một
In [9]: import pandas as pd

In [10]: pd.DataFrame(my_dict)
Out[10]:
a b c d e f g h i j .. q r s t u v w x y z
0 1 1 1 1 1 1 1 1 1 1 .. 1 1 1 1 1 1 1 1 1 1

[1 rows x 26 columns]
3 hoặc một
In [9]: import pandas as pd

In [10]: pd.DataFrame(my_dict)
Out[10]:
a b c d e f g h i j .. q r s t u v w x y z
0 1 1 1 1 1 1 1 1 1 1 .. 1 1 1 1 1 1 1 1 1 1

[1 rows x 26 columns]
4 với một
In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
8 trong Python 3. 6+

In [9]: import pandas as pd

In [10]: pd.DataFrame(my_dict)
Out[10]:
a b c d e f g h i j .. q r s t u v w x y z
0 1 1 1 1 1 1 1 1 1 1 .. 1 1 1 1 1 1 1 1 1 1

[1 rows x 26 columns]
6 cũng giả định rằng thứ tự của các mục trong một đối tượng
In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
8 là không đáng kể. Nếu bạn khởi tạo một
In [9]: import pandas as pd

In [10]: pd.DataFrame(my_dict)
Out[10]:
a b c d e f g h i j .. q r s t u v w x y z
0 1 1 1 1 1 1 1 1 1 1 .. 1 1 1 1 1 1 1 1 1 1

[1 rows x 26 columns]
3 với một
In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
8, nó sẽ sắp xếp các mục theo khóa

In [9]: import pandas as pd

In [10]: pd.DataFrame(my_dict)
Out[10]:
a b c d e f g h i j .. q r s t u v w x y z
0 1 1 1 1 1 1 1 1 1 1 .. 1 1 1 1 1 1 1 1 1 1

[1 rows x 26 columns]

Nó không sắp xếp các cột nếu bạn sử dụng một

In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
6

In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
2

(Đoạn liên quan của mã

In [9]: import pandas as pd

In [10]: pd.DataFrame(my_dict)
Out[10]:
a b c d e f g h i j .. q r s t u v w x y z
0 1 1 1 1 1 1 1 1 1 1 .. 1 1 1 1 1 1 1 1 1 1

[1 rows x 26 columns]
6 nằm trong phương thức _init_dict của lớp DataFrame. )

Việc thêm đảm bảo có thể nguy hiểm như thế nào

Những ví dụ này minh họa một hiện tượng đáng ngạc nhiên. thêm một đảm bảo có thể nguy hiểm. Người dùng không thể dựa vào sự đảm bảo đó cho đến khi sự tồn tại của nó trở thành kiến ​​thức phổ biến và ý nghĩa của kiến ​​thức phổ biến đó lan truyền khắp cộng đồng và vào cơ sở hạ tầng có liên quan

Quá trình này sẽ mất nhiều thời gian đặc biệt trong trường hợp bảo đảm đặt hàng của Python

In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
8 vì Python 2 kế thừa. 7 tiếp tục được sử dụng rộng rãi và do nhiều gói nguồn mở không được bảo trì tốt. Do đó, tôi hy vọng rằng việc sử dụng
In [1]: from string import ascii_lowercase

In [2]: my_dict = {letter: [1] for letter in ascii_lowercase[::-1]}

In [3]: print(my_dict)
{'z': [1], 'y': [1], 'x': [1], 'w': [1], 'v': [1], 'u': [1], 't': [1], 's': [1], 'r': [1], 'q': [1], 'p': [1], 'o': [1], 'n': [1], 'm': [1], 'l': [1], 'k': [1], 'j': [1], 'i': [1], 'h': [1], 'g': [1], 'f': [1], 'e': [1], 'd': [1], 'c': [1], 'b': [1], 'a': [1]}

In [4]: my_dict
Out[4]:
{'a': [1],
'b': [1],
'c': [1],
'd': [1],
'e': [1],
'f': [1],
'g': [1],
'h': [1],
'i': [1],
'j': [1],
'k': [1],
'l': [1],
'm': [1],
'n': [1],
'o': [1],
'p': [1],
'q': [1],
'r': [1],
's': [1],
't': [1],
'u': [1],
'v': [1],
'w': [1],
'x': [1],
'y': [1],
'z': [1]}
6 để truyền đạt ý định tới các nhà phát triển khác và thư viện bên thứ ba sẽ vẫn là phương pháp hay nhất trong vài năm

Là từ điển được sắp xếp theo thứ tự hoặc không theo thứ tự?

Lưu ý rằng từ điển không có thứ tự , nghĩa là bất cứ khi nào bạn lặp qua một từ điển, bạn sẽ duyệt qua mọi khóa, nhưng bạn thì không .

Là một từ điển một danh sách theo thứ tự?

Danh sách là tập hợp dữ liệu được sắp xếp theo thứ tự, trong khi đó từ điển lưu trữ dữ liệu dưới dạng các cặp khóa-giá trị bằng cách sử dụng cấu trúc bảng băm .

Các giá trị từ điển có được sắp xếp theo thứ tự không?

Như bạn sẽ thấy ở phần sau của hướng dẫn, sử dụng danh sách các bộ có thể là lựa chọn tốt nhất cho dữ liệu của bạn. Một điểm thiết yếu cần hiểu khi sắp xếp từ điển là mặc dù chúng bảo toàn thứ tự chèn, nhưng chúng không được coi là một chuỗi. Từ điển giống như một tập hợp các cặp khóa-giá trị và các bộ này không có thứ tự