Python Cookbook 1.8 与字典有关的计算问题

本文介绍了一种优雅的方法来处理字典中的数据,如求取最小值、最大值及排序,利用Python内置函数zip()和sorted(),并展示了如何通过lambda函数获取特定值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时候我们需要对一个字典进行各种计算,比如求取最大值、最小值以及排序等等。
如下是一个字典,我们之前会怎么做呢?
大概会是这样:

prices = {'a': 123, 'b': 23, 'c':293, 'd': 67}
min_value = 10000
for key in prices.keys():
    if  min_value > prices[key]:
        min_value = prices[key]

通过遍历的方式来逐个进行比较,最终获取一个最小的值。

求取最小值:
但是在这一节里提供了一个比较优雅的方式,利用 zip 函数。
先说一下 zip() 函数,之前用到这个函数是两个长度相同的列表同时遍历,可以同时获取两个列表里相同位置的元素,在这里,是另一个用途:
在这里插入图片描述
可以看到返回的是一个元素,最小值以及相应的键

求最大值把 min() 函数改成 max() 即可。

排序:
要对数据进行排序,把 min() 函数改成 sorted() 即可:
在这里插入图片描述
注意:
zip() 创建了一个迭代器,它的内容只能被消费一次,使用过一次以后,需要重新在进行 zip() 迭代。

到了这里我在思考一个问题,如果只是想要获取字典里值的最小值,或者键的最小值我们可以直接这样实现:

min(prices)  #键的最小值
min(prices.values())	#值的最小值

但是上述函数给我们返回的是 键和值 两者。,不同的需求,使用不同的方法。

如果我们的需求是获取 最小值的键 ,除了上述的 zip() 函数,我们还可以通过 lambda 函数来实现:

min(prices, key = lambda x: prices[x])

在这里插入图片描述
如果字典里有两个值相等的键值对,那么比较大小的依据则是键,一个字典里键肯定是不一样的,如下所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值