本文实例讲述了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