Python 字典 使用技巧

文章目录

    • 1.遍历字典的3种方式
    • 2.字典推导式的使用
    • 3.对字典排序

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实战,Python,字典,使用技巧)