zip() --与字典相关的计算-最大、最小值,排序

本文介绍了一种使用Python字典的高效方法,通过示例展示了如何利用zip()函数找到字典中最大和最小的值,以及如何根据value进行排序。这种方法避免了传统方式的多次查找,提高了代码的可读性和效率。

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

现有如下字典:

prices = {
    'ACME': 45.23,
    'IBM': 111.32,
    'FB': 45.89
}
求字典的最大最小值,根据value求值

1、通常做法:

prices = {
    'ACME': 45.23,
    'IBM': 111.32,
    'FB': 45.89
}
max(prices, key=lambda k: prices[k])
Out[3]: 'IBM'
min(prices, key=lambda k: prices[k])
Out[4]: 'ACME'

但是这么做,只是返回了字典的键,如需返回对应的value,还需:

prices[max(prices, key=lambda k: prices[k])]
Out[7]: 111.32

2、使用zip(),将字典的键-值对反转为值-键对序列来解决这个问题,这样元组上执行比较操作时,值先比较,再比较键:

max(zip(prices.values(), prices.keys()))
Out[14]: (111.32, 'IBM')
min(zip(prices.values(), prices.keys()))
Out[15]: (45.23, 'ACME')
# 根据value来排序
sorted(zip(prices.values(), prices.keys()))
Out[16]: [(45.23, 'ACME'), (45.89, 'FB'), (111.32, 'IBM')]

注意:
zip()创建了一个迭代器,它的内容只能被消费一次。

a = zip(prices.values(), prices.keys())
max(a)
Out[22]: (111.32, 'IBM')
max(a) # ValueError: max() arg is an empty sequence
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值