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