python 字典排序

引言

字典,形如 dic = {'a':1 , 'b':2 , 'c': 3}形式中的元素并没有顺序,所以dic[0]是有语法错误的。并且字典是没有重复的键值。


待解决问题

如何根据需要可以根据“键”或“键值”进行不同顺序的排序?


函数原型

sorted(dic,value,reverse)
dic为待比较字典,value为排序的对象(这里指键或键值),
reverse:注明升序还是降序,True--降序,False--升序(默认)


比如:
>>> dic = {'a':3,'b':2,'c':1} 
#按键排序
>>> sorted(dic.iteritems(),key = lambda asd:asd[0],reverse = True)
[('c', 1), ('b', 2), ('a', 3)]
>>> 
>>> sorted(dic.iteritems(),key = lambda asd:asd[0],reverse = False)
[('a', 3), ('b', 2), ('c', 1)]
>>> 
>>> sorted(dic.iteritems(),key = lambda asd:asd[0])
[('a', 3), ('b', 2), ('c', 1)]
#按键值排序
>>> sorted(dic.iteritems(),key = lambda asd:asd[1],reverse = True)
[('a', 3), ('b', 2), ('c', 1)]
>>> 
>>> sorted(dic.iteritems(),key = lambda asd:asd[1],reverse = False)
[('c', 1), ('b', 2), ('a', 3)]

注意:
排序之后原字典没有变,顺序依旧

两个函数
1.lambda
功能: 创建匿名函数
区别: 和def函数定义,以下两点区别

lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符;而def则会把函数对象赋值给一个变量。
lambda它只是一个表达式,而def则是一个语句。

>>> func = lambda x:x+2
>>> func(1)
3
>>> func = lambda x,y:x+y
>>> func(1,2)
3

2.iteritems()
功能: iteritems()以迭代器对象返回字典键值对
区别: 和item相比:items以列表形式返回字典键值对

>>> print dic.iteritems()
<dictionary-itemiterator object at 0x7fb26fad8520>
>>> print dic.items()
[('a', 3), ('c', 1), ('b', 2)]

注释: 在函数sorted(dic.iteritems(), key = lambda asd:asd[1])中,第一个参数传给第二个参数“键-键值”,第二个参数取出其中的键

([0])或键值(1])

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值