Trên thực tế, pprint dường như sắp xếp các khóa cho bạn trong python2.5
>>> from pprint import pprint
>>> mydict = {'a':1, 'b':2, 'c':3}
>>> pprint(mydict)
{'a': 1, 'b': 2, 'c': 3}
>>> mydict = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
>>> pprint(mydict)
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
>>> d = dict(zip("kjihgfedcba",range(11)))
>>> pprint(d)
{'a': 10,
'b': 9,
'c': 8,
'd': 7,
'e': 6,
'f': 5,
'g': 4,
'h': 3,
'i': 2,
'j': 1,
'k': 0}
Nhưng không phải lúc nào cũng theo python 2.4
>>> from pprint import pprint
>>> mydict = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
>>> pprint(mydict)
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}
>>> d = dict(zip("kjihgfedcba",range(11)))
>>> pprint(d)
{'a': 10,
'b': 9,
'c': 8,
'd': 7,
'e': 6,
'f': 5,
'g': 4,
'h': 3,
'i': 2,
'j': 1,
'k': 0}
>>>
Đọc mã nguồn của pprint.py (2.5) nó sắp xếp từ điển bằng cách sử dụng
items = object.items()
items.sort()
cho nhiều dòng hoặc cái này cho một dòng
for k, v in sorted(object.items()):
trước khi nó cố gắng in bất cứ thứ gì, vì vậy nếu từ điển của bạn sắp xếp đúng như vậy thì nó sẽ in đúng cách. Trong 2.4, sắp xếp thứ hai () bị thiếu (khi đó không tồn tại) nên các đối tượng được in trên một dòng sẽ không được sắp xếp.
Vì vậy, câu trả lời dường như là sử dụng python2.5, mặc dù điều này không giải thích rõ kết quả đầu ra của bạn trong câu hỏi.
Cập nhật Python3
Bản in đẹp bởi các phím được sắp xếp (lambda x: x [0]):
for key, value in sorted(dict_example.items(), key=lambda x: x[0]):
print("{} : {}".format(key, value))
Bản in đẹp theo các giá trị được sắp xếp (lambda x: x [1]):
for key, value in sorted(dict_example.items(), key=lambda x: x[1]):
print("{} : {}".format(key, value))