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


    大家好,我是我是皮皮。

    一、前言

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

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

    image.png

    二、解决过程

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

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

    输出结果如下图所示:

    image.png

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

    image.png

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

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

    输出结果如下图所示:

    image.png

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

    image.png

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

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

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

    image.png

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

    三、总结

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

    [图片上传失败...(image-2f700-1648466003274)]

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

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

  • 相关阅读:
    升级edk2源码的一点补充
    关于Ubuntu系统忘记密码的解决方法合集
    UEFI Shell 下的程序设计
    Windows下EDK2环境的搭建以及经典的程序设计Print Hello World !-----(Linux下的待后续熟练了再更新)
    一个刚入行的BIOS工程师的自我简介
    反爬虫,非标准的json格式解析
    Scrapy+selenium爬取简书全站-爬虫
    Scrapy
    Python 爬取豆瓣电影Top250排行榜,爬虫初试
    Linux(Ubuntu) MySQL数据库安装与卸载
  • 原文地址:https://www.cnblogs.com/dcpeng/p/16068619.html
Copyright © 2020-2023  润新知