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学习交流群共同探讨学习。


相关文章
|
1天前
|
Python
【Python操作基础】——字典,迭代器和生成器
【Python操作基础】——字典,迭代器和生成器
|
1天前
|
索引 Python
Python中的列表、元组和字典各具特色
Python中的列表、元组和字典各具特色:列表是可变的,元组不可变,字典亦可变;列表和元组有序,字典无序(但在Python 3.7+保持插入顺序);元素类型上,列表和元组元素任意,字典需键不可变;列表用方括号[],元组用圆括号(),字典用大括号{}表示。列表不适合作字典键,元组可以。选择数据结构应依据实际需求。
7 2
|
3天前
|
开发者 Python
【Python 基础】递推式构造字典(dictionary comprehension)
【5月更文挑战第8天】【Python 基础】递推式构造字典(dictionary comprehension)
|
14天前
|
Python
Python中字典和集合(二)
Python中字典和集合(二)
|
14天前
|
存储 算法 索引
Python中字典和集合(一)
Python中字典和集合(一)
|
14天前
|
存储 缓存 Python
【Python21天学习挑战赛】字典 && 小数据池
【Python21天学习挑战赛】字典 && 小数据池
|
15天前
|
存储 JSON 数据处理
|
16天前
|
存储 缓存 人工智能
bidict,一个超酷的 Python 双向字典库!
bidict,一个超酷的 Python 双向字典库!
19 1
|
16天前
|
存储 人工智能 索引
Python中的嵌套字典访问与操作详解
Python中的嵌套字典访问与操作详解
22 1
|
17天前
|
JSON 数据可视化 定位技术
python_将包含汉字的字典数据写入json(将datav的全省数据中的贵州区域数据取出来)
python_将包含汉字的字典数据写入json(将datav的全省数据中的贵州区域数据取出来)
19 0