gpt4 book ai didi

python - 可读打印出一个按键排序的python dict()

转载 作者:IT老高 更新时间:2023-10-28 21:33:28 26 4
gpt4 key购买 nike

我想使用 PrettyPrinter 将 python 字典打印到文件中(以提高可读性),但要在输出文件中按键对字典进行排序以进一步提高可读性。所以:

mydict = {'a':1, 'b':2, 'c':3}
pprint(mydict)

当前打印到

{'b':2,
'c':3,
'a':1}

我想把字典打印出来,但要按键排序,例如打印出来。

{'a':1,
'b':2,
'c':3}

最好的方法是什么?

最佳答案

其实pprint好像在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}

但并不总是在 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}
>>>

阅读 pprint.py (2.5) 的源代码,它确实使用对字典进行排序

items = object.items()
items.sort()

用于多行或此用于单行

for k, v in sorted(object.items()):

在它尝试打印任何东西之前,所以如果你的字典像这样正确排序,那么它应该正确打印。在 2.4 中,第二个 sorted() 缺失(当时不存在),因此打印在单行上的对象不会被排序。

所以答案似乎是使用 python2.5,尽管这并不能完全解释您在问题中的输出。

Python3 更新

按排序的 pretty-print (lambda x: x[0]):

for key, value in sorted(dict_example.items(), key=lambda x: x[0]): 
print("{} : {}".format(key, value))

按排序的 pretty-print (lambda x: x[1]):

for key, value in sorted(dict_example.items(), key=lambda x: x[1]): 
print("{} : {}".format(key, value))

关于python - 可读打印出一个按键排序的python dict(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1479649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com