资讯专栏INFORMATION COLUMN

Python 基础起步 (八) 字典实用技巧大全,申精干货,必看!

flybywind / 3070人阅读

摘要:,同为小白的朋友们大家好,这期主要为大家带来有关字典的一些实用技巧。上篇笔记通过感人肺腑的老白让大家认识到了字典这么有用的数据类型,这一期让我们看看如何能更好的操作字典。

Hello ,同为小白的朋友们大家好,这期主要为大家带来有关字典的一些实用技巧。上篇笔记通过感人肺腑的老白让大家认识到了字典这么有用的数据类型,这一期让我们看看如何能更好的操作字典。

基础篇

下面我给大家来一个简单的字典方法汇总,诚意满满,希望大家喜欢,如果有错误或者遗漏希望大神可以补上~

创建字典,得到字典中的键值,新增,修改,删除,清空字典
stocks ={"IBM":146,            # 创建字典
         "MSFT":44,
         "MAOTAI":1000}

stocks["IBM"]                  # 查询字典中的一个值  Out:146
stocks.get("MSFT")             # 查询字典中的一个值  Out:44
stocks.get("a","Not found")    # 查询字典中的一个值,如果没有,返回 Not found
stocks["a"]                    # 抛出错误,因为字典中没有这个值
stocks["IBM"]=200              # 修改值
stocks["APPLE"]=400            # 新增键和值
stocks.update({"APPLE":900,
               "MAOTAI":0,
               "MSFT":250})    # 一次修改多个值

del stocks["APPLE"]            # 删除一个值
stocks.pop["MAOTAI"]           # 删除并返回删除的值
stocks.keys()                  # 获得字典的所有键
stocks.values()                # 获得字典的所有值
stocks.items()                 # 获得字典的所有键和值,形式为 (key,value)

for k,v in stocks.items():     # 遍历一个字典,输出它的键和值
    print(k,v)                          

stocks.clear()                 #清空一个字典,让字典为空
del stocks                     #直接删除一个字典

好啦,基础方法就这么多大概,这里创建了一个stocks字典用来表示股票名称和价钱,然后在基础上举例子的,有两点需要大家注意:

一次更新多个值的时候用update()方法会很方便

如果利用dict[key]的方式获取一个字典中不存在的值会报错,正确做法是用get()函数,效果好很多

奇淫巧技篇
创建字典歪门邪道之一: list + zip

除了常规的方式,还有很多其他方式可以帮助我们创建一个字典,比如我们这里想要创建一个字典来表示一个学生的各科成绩:

subject=["Math","Chinese","English","Science","Art"]
marks=[80,78,96,60,75]

final_result=dict(zip(subject,marks))
print(final_result.items())

Out: dict_items([("Math", 80), ("Chinese", 78), ("English", 96), ("Science", 60), ("Art", 75)])

这里其实很容易看懂,我们把subject的所有值作为key值,把marks所有值看成values的值,最后用Python很常见的zip就啪啪啪的将他们合并啦,形成了一个新的字典final_result

创建字典歪门邪道之二: 利用等号

上面的字典还可以通过这种形式来创建;

final_result= dict(Math=80,Chinese=78,English=96,Science=60,Art=75)
print(final_result.items())

Out: dict_items([("Math", 80), ("Chinese", 78), ("English", 96), ("Science", 60), ("Art", 75)])
字典排序: 根据键值Key排序

还是使用上面已经建好的字典 final_result,我们先根据字典中的键值来排序:

print(sorted(final_result.items())) # 自动根据键的值从小到大或者按照A-Z排序
Out:[("Art", 75), ("Chinese", 78), ("English", 96), ("Math", 80), ("Science", 60)]

换一种方式:

import operator
print(sorted(final_result.items(),key=operator.itemgetter(0)))
Out:[("Art", 75), ("Chinese", 78), ("English", 96), ("Math", 80), ("Science", 60)]

或者用lamba函数秀一波:

print(sorted(final_result.items(),key=lambda x:x[0]))
Out:[("Art", 75), ("Chinese", 78), ("English", 96), ("Math", 80), ("Science", 60)]

不要问我为什么,我也在学,但是我深知在Python编程装逼界你不用几个lamba,reduce什么的都不好意思和人打招呼,哈哈

如果我们想要实现根据键值倒序也很简单:

print(sorted(final_result.items(),reverse=True))
Out:[("Science", 60), ("Math", 80), ("English", 96), ("Chinese", 78), ("Art", 75)]
字典排序: 根据Value值排序

其实大家看到了根据key的排序,也猜到了如何根据value 排序:

print(sorted(final_result.items(),key=lambda x:x[1])) #根据分数排序,从低到高
Out:[("Science", 60), ("Art", 75), ("Chinese", 78), ("Math", 80), ("English", 96)]

或者换一种方式:

import operator
print(sorted(final_result.items(),key=operator.itemgetter(1)))

Out:[("Science", 60), ("Art", 75), ("Chinese", 78), ("Math", 80), ("English", 96)]

倒序也是类似:

print(sorted(final_result.items(),key=lambda kv:kv[1],reverse=True))
Out:[("English", 96), ("Math", 80), ("Chinese", 78), ("Art", 75), ("Science", 60)]

这里我在lamba后面没有写x,写了一个kv,就是告诉大家这里是什么不太重要,先这么理解就行

获取字典的子集

我们将会一直使用上面的final_result字典来示范,这里如果我们想要得到这个学生成绩大于70分的字典子集应该怎么做呢,很简单:

final_result= dict(Math=80,Chinese=78,English=96,Science=60,Art=75)
above_seventy ={subject:mark for subject,mark in final_result.items() if mark >70}
print(above_seventy.items())

Out:dict_items([("Math", 80), ("Chinese", 78), ("English", 96), ("Art", 75)])

交换字典中的key和value的值

这个小技巧可以这样实现:

exchange_key_value= dict(zip(final_result.values(),final_result.keys()))
print(exchange_key_value.items())

Out: dict_items([(80, "Math"), (78, "Chinese"), (96, "English"), (60, "Science"), (75, "Art")])

获取字典最大值最小值

简直不要太简单呀:

print("The best mark is {}".format(max(final_result.values())))
print("The worst mark is {}".format(min(final_result.values())))

Out: The best mark is 96
     The worst mark is 60
总结

没啥可说的啦,写了这么多,求老铁们双击666鼓励一波!!!!
完结,撒花~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43112.html

相关文章

  • Pandas之旅(一): 让我们把基础知识一次撸完,精干

    为什么你需要pandas 大家好,今天想和大家分享一下有关pandas的学习新的,我因工作需要,从去年12月开始接触这个非常好用的包,到现在为止也是算是熟悉了一些,因此发现了它的强大之处,特意想要和朋友们分享,特别是如果你每天和excel打交道,总是需要编写一些vba函数或者对行列进行groupby啊,merge,join啊之类的,相信我,pandas会让你解脱的。 好啦,闲话少说,这篇文章的基础...

    tuomao 评论0 收藏0
  • Python 进阶之路 (二) Dict 进阶宝典,初二快乐!

    摘要:新年快乐大家好,今天是大年初二,身在国外没有过年的氛围,只能踏实写写文章,对社区做点贡献,在此祝大家新年快乐上一期为大家梳理了一些的进阶用法,今天我们来看字典的相关技巧,我个人在编程中对字典的使用非常频繁,其实对于不是非常大的数据存储需求, 新年快乐 大家好,今天是大年初二,身在国外没有过年的氛围,只能踏实写写文章,对社区做点贡献,在此祝大家新年快乐!上一期为大家梳理了一些List的进...

    ChristmasBoy 评论0 收藏0
  • Python 基础起步 (六) List的实用技巧大全

    摘要:如果还有不明白的小白朋友们可以百度一下哈,嗖的一下百家号补习班就出来啦,哈哈,你啥都没查到开个小玩笑。 ## List初步进阶 ## hello,大家好,经过上篇笔记的介绍,我们已经对List这种数据类型有了初步的理解,今天我要趁热打铁,为大家介绍一些实用的List技巧,希望能帮助到各位大家~ extend合并列表() first_lst = [I,am,noob] s...

    shevy 评论0 收藏0
  • Python 进阶之路 (一) List 进阶方法汇总,新年快乐!

    摘要:尝射于家圃,有卖油翁释担而立,睨之,久而不去。康肃问曰汝亦知射乎吾射不亦精乎翁曰无他,但手熟尔。康肃忿然曰尔安敢轻吾射翁曰以我酌油知之。 开启变身模式 大家好, 从这一期开始,我们会从小白变身为中等小白,在基础起步阶段有太多的东西我没有讲到,但是俗话说的好,无他,但手熟尔,只要多多练习,时间会是最好的证明,相信我们终有一天会成为高手,因此从这一系列开始,让我们一起更上一层楼,还是和往常...

    garfileo 评论0 收藏0
  • Python 基础起步 (七) 初识字典 Dictionary(绝命毒师前传)

    摘要:大家好,我是小白,书接上回,我们目前已经了解到了中很常见的一种数据类型,也初步掌握了一些自带的有关的方法今天为大家介绍另外一种异常火爆的数据结构字典,不夸张的讲,基本上我们熟悉了列表和字典后有关数据结构这里就差不多啦,实际的项目中应用的最多 大家好,我是小白,书接上回,我们目前已经了解到了Python中很常见的一种数据类型:List,也初步掌握了一些Python自带的有关List的方法...

    BaronZhang 评论0 收藏0

发表评论

0条评论

flybywind

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<