为了账号安全,请及时绑定邮箱和手机立即绑定

python中字典排序怎么处理?

/ 猿问

python中字典排序怎么处理?

查看完整描述

2 回答

?
这个名字没人起

用万金油sorted()函数

  • 举一个简单的例子

my_dict={"cc":100,"aa":200,"bb":10}

print(sorted(my_dict.iteritems(),key=lambda x:x[0]))#表示按照key排序

>>>[('aa', 200), ('bb', 10), ('cc', 100)]


print(sorted(my_dict.iteritems(),key=lambda x:x[1]))#表示按照value排序

>>>[('bb', 10), ('cc', 100), ('aa', 200)]


注意原始的my_dict本身顺序并没有变(不信你可以print看看),排序是通过sorted()返回了一个新的字典


  • 另外一种做法,因为字典是无序,若你一开始设计的时候就希望这个数据结构,按照的添加的顺序进行有序排列(比如读取CSV文件),那么我们就是利用collection模块里面的OrderedDict()处理:

from collections import OrderedDict

orderDict=OrderedDict()

orderDict['a']=1

orderDict['b']=2

orderDict['c']=3

print(orderDict)

>>>OrderedDict([('a', 1), ('b', 2), ('c', 3)])


  • 对比一下,若是普通的dict是乱序的,若不用OrderedDict()

orderDict=dict()

orderDict['a']=1

orderDict['b']=2

orderDict['c']=3

print(orderDict)

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


最后要提醒一下:OrderedDict()虽然是好东西,但是它内部维护了一个双向链表,若数据量很大的话,会非常消耗内存.

作者:leoxin


查看完整回答
反对 回复 2018-04-20
?
FightingBoy
d = {'a':1,'b':4,'c':2}
sorted(d.items(),key = lambda x:x[1],reverse = True)


查看完整回答
反对 回复 2018-04-20

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信