Python实现:与其穷举构造字典,不如直接用《百家姓》返回其index

简介: Python实现:与其穷举构造字典,不如直接用《百家姓》返回其index

大家好,我是我是皮皮。


一、前言


前几天在Python最强王者交流群【小王】大佬分享了一个Python代码,关于百家姓的,按百家姓排名名字顺序。

63557420ae784eb67c698449f773eb85.png

这个方法虽好,但是【德善堂小儿推拿-瑜亮老师】大佬觉得与其穷举构造字典,不如直接用《百家姓》返回其index,在粉丝【mofyl】的请求下,完成了代码编写。

b4282158a598fd35127e57b74b566116.png


二、解决过程


下面这个是针对单字姓的,百家姓是从网上直接复制的,返回其index实现的代码如下所示:

import re
a = '''
赵钱孙李,周吴郑王。冯陈褚卫,蒋沈韩杨。朱秦尤许,何吕施张。孔曹严华,金魏陶姜。
戚谢邹喻,柏水窦章。云苏潘葛,奚范彭郎。鲁韦昌马,苗凤花方。俞任袁柳,酆鲍史唐。
费廉岑薛,雷贺倪汤。滕殷罗毕,郝邬安常。乐于时傅,皮卞齐康。伍余元卜,顾孟平黄。
和穆萧尹,姚邵湛汪。祁毛禹狄,米贝明臧。计伏成戴,谈宋茅庞。熊纪舒屈,项祝董梁。
杜阮蓝闵,席季麻强。贾路娄危,江童颜郭。梅盛林刁,钟徐邱骆。高夏蔡田,樊胡凌霍。
虞万支柯,昝管卢莫。经房裘缪,干解应宗。丁宣贲邓,郁单杭洪。包诸左石,崔吉钮龚。
程嵇邢滑,裴陆荣翁。荀羊於惠,甄曲家封。芮羿储靳,汲邴糜松。井段富巫,乌焦巴弓。
牧隗山谷,车侯宓蓬。全郗班仰,秋仲伊宫。宁仇栾暴,甘钭厉戎。祖武符刘,景詹束龙。
叶幸司韶,郜黎蓟薄。印宿白怀,蒲邰从鄂。索咸籍赖,卓蔺屠蒙。池乔阴鬱,胥能苍双。
闻莘党翟,谭贡劳逄。姬申扶堵,冉宰郦雍。郤璩桑桂,濮牛寿通。边扈燕冀,郏浦尚农。
温别庄晏,柴瞿阎充。慕连茹习,宦艾鱼容。向古易慎,戈廖庾终。暨居衡步,都耿满弘。
匡国文寇,广禄阙东。欧殳沃利,蔚越夔隆。师巩厍聂,晁勾敖融。冷訾辛阚,那简饶空。
曾毋沙乜,养鞠须丰。巢关蒯相,查后荆红。游竺权逯,盖益桓公。
'''
b = re.sub(r'[,。\n]', '', a)
c = {k: v for k, v in enumerate(b)}
print(c)

输出结果如下图所示:

5938cbc20a7b63a52807328499a3b6e.jpg

单姓的容易实现,那么复姓的会不会出不来呢?

93f67556009a0e6771285d0c26f247c1.png

复姓实现的代码如下所示:

fx = '''
万俟,司马,上官,欧阳,夏侯,诸葛,闻人,东方,
赫连,皇甫,尉迟,公羊,澹台,公冶,宗政,濮阳,
淳于,单于,太叔,申屠,公孙,仲孙,轩辕,令狐,
钟离,宇文,长孙,慕容,鲜于,闾丘,司徒,司空,
丌官,司寇,仉督,子车,颛孙,端木,巫马,公西,
漆雕,乐正,壤驷,公良,拓跋,夹谷,宰父,谷梁,
晋楚,闫法,汝鄢,涂钦,段干,百里,东郭,南门,
呼延,归海,羊舌,微生,岳帅,缑亢,况郈,有琴,
梁丘,左丘,东门,西门,商牟,佘佴,伯赏,南宫,
墨哈,谯笪,年爱,阳佟,第五,言福'''
fx_list = fx.replace("\n", "").split(",")
fx_dict = {k: v for k, v in enumerate(fx_list)}
print(fx_dict)

输出结果如下图所示:

299c15c7bf6ca6d11322039bbf6fa29.jpg

小伙伴们直呼好家伙,完美解决,

5a7bbeefdc3d5d5e1501775f5dcc1e16.png

后面【🌑(这是月亮的背面)】大佬提出不需要推导式,也可以实现,直接上代码,如下所示:

dict(enumerate(fx.replace('\n', '').split(',')))

实现的效果是一样的,如下图所示:

406374b07fc82b41de5a736d81fbbcf9.png

姓氏应该放在key上,索引值放到value上,方便索引查找的问题,可以根据实际需要和程序员的代码习惯去放键值的位置,至于具体的代码编写,就要根据需求了。


三、总结


大家好,我是皮皮。这篇文章基于粉丝提问,针对百家姓中姓氏排名问题,给出了具体说明和演示,顺利地帮助粉丝解决了问题。不过这里也只是针对该具体场景给出的答案,如果换个场景,可能就不太适用了。

4ee10bcda536e05baf68d725886212d.jpg

最后感谢粉丝【mofyl】提问,感谢【小王】、【德善堂小儿推拿-瑜亮老师】、【🌑(这是月亮的背面)】、【dcpeng】、【冫马讠成】、【mofyl】、【东哥】大佬给予的支持和积极参与学习。


小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。


相关文章
|
3月前
|
存储 JSON 索引
一文让你彻底搞懂 Python 字典是怎么实现的
一文让你彻底搞懂 Python 字典是怎么实现的
60 13
|
3月前
|
存储 数据安全/隐私保护 Python
Python常用数据结构——字典的应用
Python常用数据结构——字典的应用
41 2
|
3月前
|
关系型数据库 MySQL 数据库
Python MySQL查询返回字典类型数据的方法
通过使用 `mysql-connector-python`库并选择 `MySQLCursorDict`作为游标类型,您可以轻松地将MySQL查询结果以字典类型返回。这种方式提高了代码的可读性,使得数据操作更加直观和方便。上述步骤和示例代码展示了如何实现这一功能,希望对您的项目开发有所帮助。
151 4
|
3月前
|
Python
Python 字典删除下标前两个
Python 字典删除下标前两个
21 1
|
2月前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
39 0
|
2月前
|
存储 自然语言处理 数据库
Python字典操作实现文章敏感词检索
Python字典操作实现文章敏感词检索
29 0
|
2月前
|
存储 JSON 数据处理
分析、总结Python使用列表、元组、字典的场景
分析、总结Python使用列表、元组、字典的场景
31 0
|
2月前
|
存储 Java Serverless
【Python】字典
【Python】字典
33 0
|
2月前
|
Python
Python操作:字符串--列表--元组--字典--运算符 (一)
Python操作:字符串--列表--元组--字典--运算符 (一)
23 0
|
2月前
|
Python
Python操作:字符串--列表--元组--字典--运算符 (二)
Python操作:字符串--列表--元组--字典--运算符 (二)
21 0