前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 字典 使用技巧

Python 字典 使用技巧

作者头像
cutercorley
发布2020-07-23 16:18:33
5710
发布2020-07-23 16:18:33
举报

文章目录
  • 1.字典推导式的使用
  • 2.对字典排序

1.字典推导式的使用

题目要求:

在这里插入图片描述
在这里插入图片描述

可以看出,键十从1到676,值是26个英文大写字母的组合。 我们首先要做的是找到字母组合的方法,首先想到的应该是利用chr()函数得到整型对应的字符,范围是65-90,进而可以用得到两个字符的组合,如下:

代码语言:javascript
复制
lis = [chr(j) + chr(i) for j in range(65,91) for i in range(65,91)]
print(lis)

打印:

代码语言:javascript
复制
['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()函数即可得到所需结果,如下:

代码语言:javascript
复制
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)

打印:

代码语言:javascript
复制
{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个英文字母,再进行拼接,如下:

代码语言:javascript
复制
import string
{k + 1:s for k,s in enumerate([i + j for i in string.ascii_uppercase for j in string.ascii_uppercase])}

与前者效果是相同的。

2.对字典排序

对字典排序有2种情况:按照键排序和按照值排序,最简单易行的方式都是通过lambda表达式实现。 按照键排序示例如下:

代码语言:javascript
复制
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)

打印:

代码语言:javascript
复制
{'cl1': 4, 'cl10': 1, 'cl101': 101, 'cl11': 2, 'cl2': 3}

显然,用到了字典推导式。

按照值排序示例如下:

代码语言:javascript
复制
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)

打印:

代码语言:javascript
复制
{'cl10': 1, 'cl11': 2, 'cl2': 3, 'cl1': 4, 'cl101': 101}

显然,对字典根据值进行了排序; 并将实现部分抽离到函数中,优化了代码结构。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1.字典推导式的使用
  • 2.对字典排序
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档