专栏首页Corley的开发笔记Python 字典 使用技巧

Python 字典 使用技巧

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

1.字典推导式的使用

题目要求:

可以看出,键十从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])}

与前者效果是相同的。

2.对字典排序

对字典排序有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}

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django+Vue开发生鲜电商平台之10.购物车、订单管理和支付功能

    购物车需要实现在商品详情页面将该商品加入购物车后,右上角同步显示,并且点击去结算会同步显示,并且价格与数量同步,具体包括了增删改查等操作,在apps/trade...

    cutercorley
  • Django+Vue开发生鲜电商平台之8.商品详情页功能实现

    Github和Gitee代码同步更新: https://github.com/PythonWebProject/Django_Fresh_Ecommerce;...

    cutercorley
  • Python字典及基本操作(超级详细)

    比如有份成绩表数据,语文:79,数学:80,英语:92,这组数据看上去像两个列表,但这两个列表的元素之间有一定的关联关系。如果单纯使用两个列表来保存这组数据,则...

    cutercorley
  • Mathematica使用中易犯的错误

    WolframChina
  • Python的dict()函数

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    于小勇
  • Vue数据双向绑定原理

    Vue是通过数据劫持的方式来实现数据双向数据绑定的,其中最核心的方法便是通过Object.defineProperty()来实现对属性的劫持,该方法允许精确地添...

    WindrunnerMax
  • 数据分析:解析一篇 3天获得113万业绩的微信软文,告诉你如何写走心文案

    本文所有用到的元数据和素材都可以向我索取,也欢迎来我小密圈看看(方式在文后)。 这个问题自从我进入职场时就一直在思考,我个人认为文案是战略或者策略的执行和体现,...

    沉默的白面书生
  • 数据分析:深度解读一篇3天卖113万产品的文章

    什么叫走心文案?如何写走心文案? 这个问题自从我进入职场时就一直在思考,我个人认为文案是战略或者策略的执行和体现,和渠道、营销推广是并驾齐驱的重要的,于是本文就...

    沉默的白面书生
  • spring注解之@Import注解的三种使用方式

    对应的import的bean都将加入到spring容器中,这些在容器中bean名称是该类的全类名 ,比如com.yc.类名

    HUC思梦
  • tomcat监控工具-probe

    tomcat probe是一个开源的监控tomcat运行状态工具,可以实时查看项目运行的情况,监控内存,cpu,日志等等

    飞天小子

扫码关注云+社区

领取腾讯云代金券