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可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。
你是希望按照输入顺序输出还是按照key或者value的排序输出呢?
如果按照输入顺序输可以这样(方法一):
# 通过zip方法合并两个List为Dictionary# 遍历会按原先的顺序
keys = ["b", "a", "c", "e", "d"]
values = ["2", "1", "3", "5", "4"]
for key,value in zip(keys, values):
print(key,value)
# -- OUTPUT --
# b 2
# a 1
# c 3
# e 5
# d 4
如果按照输入顺序输出还可以这样(方法二):
import collectionsd=collections.OrderedDict()
d['a']='A'
d['b']='B'
d['c']='C'
for k,v in d.items():
print k,v
# -- OUTPUT --
#a A
#b B
#c C
如果按照key排序输出要这样:
x = {1:2, 3:4, 4:3, 2:1, 0:0}#升序
sorted_x = sorted(x.iteritems(), key=lambda x : x[0])
print sorted_x
# -- OUTPUT --
#[(0, 0), (1, 2), (2, 1), (3, 4), (4, 3)]
#降序
sorted_x = sorted(x.iteritems(), key=lambda x : x[0], reverse=True)
print sorted_x
# -- OUTPUT --
#[(4, 3), (3, 4), (2, 1), (1, 2), (0, 0)]
如果按照value排序输出要这样:
x = {1:2, 3:4, 4:3, 2:1, 0:0}#升序
sorted_x = sorted(x.iteritems(), key=lambda x : x[1])
print sorted_x
# -- OUTPUT --
#[(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]
#降序
sorted_x = sorted(x.iteritems(), key=lambda x : x[1], reverse=True)
print sorted_x
# -- OUTPUT --
#[(3, 4), (4, 3), (1, 2), (2, 1), (0, 0)]
默认情况下Python的字典输出顺序是按照键的创建顺序。字典的无序是指,不能人为重新排序。
比如说你按键值1,2,3,4的顺序创建的字典,只能由解析器按创建顺序,还是1,2,3,4的输出。
你无法控制它按照4,3,2,1的顺序输出,你也无法做到1,3,2,4的顺序。
而且这个输出顺序是也不是能真正按照创建顺序可以控的。
这里面有两个影响因素:
(1)键值的哈希碰撞,hash(key1) == hash(key2)时,向字典里连续添加的这个两个键的顺序是不可以控制的,也是无法做到连续的,后来的键会按算法调整到其它位置。
(2)字典空间扩容,当键的数量超过字典默认开的空间时,字典会做空间扩容,扩容后的键顺和创建顺序就会发生变化,不受人为控制。