本文实例讲述了Python实现字典的遍历与排序功能。分享给大家供大家参考,具体如下:
字典的遍历:
首先:
items():
功能:以列表的形式返回字典键值对
eg:
1
2
3
|
dict_ = { "a" : 2 , "b" : 3 , "c" : 6 } dict_.items() >>>[( 'a' , 2 ),( 'b' , 3 ),( 'c' , 6 )] |
iteritems():
功能:以迭代器对象返回字典键值对
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# -*- coding: cp936 -*- dict1 = { 'a' : 1 , 'b' : 2 , 'c' : 3 } #第一种: for d in dict1: print "%s:%d" % (d,dict1[d]) print #第二种: for k,v in dict1.items(): print "%s:%d" % (k,v) print #第三种: for k,v in dict1.iteritems(): print "%s:%d" % (k,v) print #第四种: for k in dict1.iterkeys(): print "%s:%d" % (k,dict1[k]) print #第五种: for v in dict1.itervalues(): print v print #第六种: for k,v in zip (dict1.iterkeys(),dict1.itervalues()): print "%s:%d" % (k,v) print |
zip()
函数可以把列表合并,并创建一个元祖对的列表。
eg:
1
2
3
4
|
list1 = [ 1 , 2 , 3 ] list2 = [ 4 , 5 , 6 ] zip (a,b) >>>[( 1 , 4 ),( 2 , 5 ),( 3 , 6 )] |
zip()
函数参数可以是任何类型的序列,也可以有两个以上的参数,当传入参数的长度不同时,zip自动以最短序列长度为准进行截取,获得元祖。
字典的排序:
首先:
函数sorted(dic,value,reverse)
过程:第一个参数传递给第二个参数“键-键值”,第二个参数取出其中的键[0]或键值[1]
dic为比较函数,value为排序对象(键或者键值)
reverse注明升序排序或是降序排序,值有true-降序和false-升序(默认值)
eg:按字典的键值排序(把dict[1]换成dict[0]就是按字典的键排序)
1
|
sorted ( dict .iteritems(),key = lambda dict : dict [ 1 ],reverse = True ) |
解释说明:
dict.iteritems()
得到[(键,键值),(键,键值),(键,键值)...]的列表。然后用sorted方法,通过key这个参数指定排序是按照键值,也就是第一个元素d[1]的值来排序。reverse=True表示需要翻转的(即降序排序),默认是升序排序。
函数lambda与函数iteritems()
lambda:
功能:创建匿名函数
eg:
1
2
3
4
5
6
|
fun_1 = lambda a:a + 1 print fun_1( 1 ) >>> 2 fun_2 = lambda a,b:a + 2 * b fun_2( 1 , 1 ) >>> 3 |
iteritems():
功能:以迭代器对象返回字典键值对
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# -*- coding: cp936 -*- print "按字典键值进行排序" dict1 = { 'a' : 3 , 'c' : 1 , 'b' : 2 } #升序: dict_a = sorted (dict1.iteritems(),key = lambda dict1:dict1[ 1 ],reverse = False ) #降序排序reverse=True ,该参数可省,默认为False。 或者dict_a.reverse() print dict_a, "\n" #降序: dict2 = { 'a' : 3 , 'c' : 1 , 'b' : 2 } dict_b = sorted (dict2.iteritems(),key = lambda dict2:dict2[ 1 ],reverse = True ) print dict_b, "\n" ############################################################## print "按字典键进行排序" dict3 = { 'd' : 6 , 'e' : 5 , 'f' : 4 } #降序: dict_c = sorted (dict3.iteritems(),key = lambda dict3:dict3[ 0 ],reverse = True ) #降序排序reverse=True ,该参数可省,默认为False。 或者dict_a.reverse() print dict_c, "\n" #升序: dict4 = { 'd' : 6 , 'e' : 5 , 'f' : 4 } dict_d = sorted (dict4.iteritems(),key = lambda dict4:dict4[ 0 ]) #改为降序与上面同理 print dict_d, "\n" |
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://blog.csdn.net/sgz_06_666666/article/details/53184198