python - 用sorted对字典排序,打印的结果为什么会是这样?
巴扎黑
巴扎黑 2017-04-18 09:41:00
[Python讨论组]

巴扎黑
巴扎黑

全部回复(4)
PHP中文网
# 你新建了一个dict
In[1]: dic = {'k1': 1, 'k2': 3, 'k3': 2}
# 然后用sorted对字典的key按照字母升序排列
In[2]: sorted(dic.items())
# 注意看输出, 上面的排序是重新生成了一个由(key, value)组成的list, 并没有作用到dict上, 另外dict的key是hashtable, 本身无序, 是不能对其排序的
Out[2]: [('k1', 1), ('k2', 3), ('k3', 2)]
In[3]: dic
# dict在这里并没有做任何修改
Out[3]: {'k1': 1, 'k2': 3, 'k3': 2}
In[4]: sorted(dic.items())[0]
Out[4]: ('k1', 1)
怪我咯

字典是无序的,不能排序,
sorted只是排序 d 的 键值对 元组的列表。

迷茫

sorted(zip(d.keys(), d.values())) 可解

怪我咯

因为dic是字典,是无序的,每次打印出来的结果可能都不相同

而sorted(dic.item())是对生成的元组('k1', 1), ('k2', 2), ('k3', 3)默认按每个元组的第一个值进行排序,所以打印结果为('k1', 1)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号