1.遍历字典的3种方式
Python3中:
1d = {'x': 1, 'y': 2, 'z': 3}
1.遍历keys:
1for k in d: 2 print(k) 3 print(d[key])
或者
1for k in d.keys(): 2 print(k) 3 print(d[key])
2.遍历values:
1for v in d.values(): 2 print(v)
3.遍历keys,values:
1for k,v in d.items(): 2 print(k) 3 print(v)
Python2中有所区别,items()、keys()、values()换成iteritems()、iterkeys()、itervalues()。
2.字典推导式的使用
题目要求:
可以看出,键是从1到676,值是26个英文大写字母的组合。
我们首先要做的是找到字母组合的方法,首先想到的应该是利用chr()函数得到整型对应的字符,范围是65-90,进而可以用得到两个字符的组合,如下:
1lis = [chr(j) + chr(i) for j in range(65,91) for i in range(65,91)] 2print(lis)
打印:
1['AA', 2 'AB', 3 'AC', 4 'AD', 5 'AE', 6 'AF', 7 'AG', 8 'AH', 9 'AI', 10 'AJ', 11 'AK', 12 'AL', 13 'AM', 14 ... 15 'ZK', 16 'ZL', 17 'ZM', 18 'ZN', 19 'ZO', 20 'ZP', 21 'ZQ', 22 'ZR', 23 'ZS', 24 'ZT', 25 'ZU', 26 'ZV', 27 'ZW', 28 'ZX', 29 'ZY', 30 'ZZ']
现在再使用字典推导式和enumerate()函数即可得到所需结果,如下:
1result = {k + 1:s for k,s in enumerate([chr(j) + chr(i) for j in range(65,91) for i in range(65,91)])} 2print(reslut)
打印:
1{1: 'AA', 2 2: 'AB', 3 3: 'AC', 4 4: 'AD', 5 5: 'AE', 6 6: 'AF', 7 7: 'AG', 8 8: 'AH', 9 9: 'AI', 10 10: 'AJ', 11 11: 'AK', 12 12: 'AL', 13 13: 'AM', 14 14: 'AN', 15 15: 'AO', 16 16: 'AP', 17 17: 'AQ', 18 18: 'AR', 19 19: 'AS', 20 20: 'AT', 21 21: 'AU', 22 22: 'AV', 23 23: 'AW', 24 24: 'AX', 25 25: 'AY', 26 26: 'AZ', 27 27: 'BA', 28 28: 'BB', 29 29: 'BC', 30 30: 'BD', 31 31: 'BE', 32 32: 'BF', 33 33: 'BG', 34 34: 'BH', 35 35: 'BI', 36 36: 'BJ', 37 37: 'BK', 38 38: 'BL', 39 39: 'BM', 40 40: 'BN', 41 41: 'BO', 42 ... 43 662: 'ZL', 44 663: 'ZM', 45 664: 'ZN', 46 665: 'ZO', 47 666: 'ZP', 48 667: 'ZQ', 49 668: 'ZR', 50 669: 'ZS', 51 670: 'ZT', 52 671: 'ZU', 53 672: 'ZV', 54 673: 'ZW', 55 674: 'ZX', 56 675: 'ZY', 57 676: 'ZZ'}
除此之外,得到26个大写字母的方式还有其他方式,如使用string模块,用string.ascii_uppercase得到26个英文字母,再进行拼接,如下:
1import string 2{k + 1:s for k,s in enumerate([i + j for i in string.ascii_uppercase for j in string.ascii_uppercase])}
与前者效果是相同的。
3.对字典排序
对字典排序有2种情况:按照键排序和按照值排序,最简单易行的方式都是通过lambda表达式实现。 按照键排序示例如下:
1unsorted_dict = {'cl11': 2, 'cl101': 101, 'cl2': 3, 'cl1': 4, 'cl10': 1} 2sorted_dict = {k: v for k, v in sorted(unsorted_dict.items(), key=lambda x: x[0])} 3print(sorted_dict) 4
打印:
1{'cl1': 4, 'cl10': 1, 'cl101': 101, 'cl11': 2, 'cl2': 3} 2
显然,用到了字典推导式。
按照值排序示例如下:
1def sort_by_value(unsorted_dict): 2 sorted_items = sorted(unsorted_dict.items(), key=lambda x: x[1]) 3 sorted_dict = {k: v for k, v in sorted_items} 4 return sorted_dict 5 6 7unsorted_dict = {'cl11': 2, 'cl101': 101, 'cl2': 3, 'cl1': 4, 'cl10': 1} 8sorted_dict = sort_by_value(unsorted_dict) 9print(sorted_dict) 10
打印:
1{'cl10': 1, 'cl11': 2, 'cl2': 3, 'cl1': 4, 'cl101': 101} 2
显然,对字典根据值进行了排序; 并将实现部分抽离到函数中,优化了代码结构。
本文原文首发来自博客专栏Python实战,由本人转发至https://www.helloworld.net/p/8v7UpmS6wF8X,其他平台均属侵权,可点击https://blog.csdn.net/CUFEECR/article/details/104928665查看原文,也可点击https://blog.csdn.net/CUFEECR浏览更多优质原创内容。
