python字典中根据值的大小,按顺序排列键有什么方法?

Python012

python字典中根据值的大小,按顺序排列键有什么方法?,第1张

s = {"a":"bb","b":"cc","c":"aa"}

def fun(s):

d = sorted(s.iteritems(),key=lambda t:t[1],reverse=False)

return d

d = fun(s)

print d

iteritems()得到的[(键,值)]的列表,通过sorted方法,指定排序的键值key是原来字典中的value属性,其中用到了匿名函数lambda,参数为t列表,返回第二个元素t[1],也就是每个键值对中的value, 从小到大排序时reverse=False,从大到小排序是True!

Python [1]  (英国发音:/ˈpaɪθən/美国发音:/ˈpaɪθɑːn/),是一种面向对象的解释型计算机程序设计语言,由荷兰人GuidovanRossum于1989年发明,第一个公开发行版发行于1991年。

Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU GeneralPublicLicense)协议。Python语法简洁清晰,特色之一是强制用空白符(whitespace)作为语句缩进。

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面)

然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

添加键值对

首先定义一个空字典

>>>dic={}

直接对字典中不存在的key进行赋值来添加

>>>dic['name']='zhangsan'

>>>dic

{'name': 'zhangsan'}

如果key或value都是变量也可以用这种方法

>>>key='age'

>>>value=30

>>>dic[key]=value

>>>dic

{'age': 30. 'name': 'zhangsan'}

这里可以看到字典中的数据并不是按先后顺序排列的,如果有兴趣,可以搜一搜数据结构中的——哈希表

从python3.7开始,字典按照插入顺序,实现了有序。修改一个已存在的key的值,不影响顺序,如果删了一个key后再添加该key,该key会被添加至末尾。标准json库的dump(s)/load(s)也是有序的

还可以用字典的setdefault方法

>>>dic.setdefault('sex','male')

'male'

>>>key='id'

>>>value='001'

>>>dic.setdefault(key,value)

'001'

>>>dic

{'id': '001', 'age': 30. 'name': 'zhangsan', 'sex': 'male'}

字典本身就是无序的,想让字典排序可以使用

sorted(dic,value,reverse)函数

按照键值排序:

print sorted(D.iteritems(),key = lambda asd:asd[0])                

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

print sorted(D.iteritems(),key = lambda asd:asd[0],reverse=True)

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

按照values排序:

print sorted(D.iteritems(),key = lambda asd:asd[1])             

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

print sorted(D.iteritems(),key = lambda asd:asd[1],reverse=True)

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