微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用pprint功能打印排序的字典

如何解决如何使用pprint功能打印排序的字典

我有一个简单的字典(old_d),格式为{'stringkey':intvalue,...},我想按值对它进行排序。为此,我使用了。

new_d = {k: v for k,v in sorted(old_d.items(),key=lambda x: x[1])}

如果我使用print(new_d)可以工作,但是当我使用pprint(new_d)时,它会返回给我按键名而不是值排序的字典。我想使用pprint,因为这些词典有很多对象,并且输出不能在一行上,我该怎么做?

解决方法

pprint()有一个关键字参数sort_dicts可解决您的问题,但仅从python 3.8版本开始可用。

,

pprint的最新版本支持sort_dicts参数(为了向后兼容,默认为True):

>>> from pprint import pprint
>>> d = {"foo": "bar","baz": "quux"}
>>> pprint(d)
{'baz': 'quux','foo': 'bar'}
>>> pprint(d,sort_dicts=False)
{'foo': 'bar','baz': 'quux'}

较旧的版本不具有此功能,因为它基于以下事实:字典在较旧的python版本中是无序的,因此,只要顺序是任意的,它将按字母顺序对键进行排序。在python> = 3.7中,字典按插入顺序排列,因此这是通过sort_dicts=False获得的顺序。

不幸的是,在订购字典与pprint赶上这一事实之间,只有一个python版本存在滞后。这是上面重复的内容,但在Python 3.7中如此:

>>> from pprint import pprint
>>> d = {"foo": "bar","baz": "quux"}
>>> pprint(d,sort_dicts=False)
Traceback (most recent call last):
  File "<stdin>",line 1,in <module>
TypeError: pprint() got an unexpected keyword argument 'sort_dicts'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。