2.3.5 获取字典中的最大值和最小值

在Python程序中,可以对字典中的数据执行各种数学运算,例如求最小值、最大值和排序等。为了能对字典中的内容实现有用的计算操作,通常会利用内置函数zip()将字典的键和值反转过来。要对字典中的数据进行排序操作,利用函数zip()和sorted()即可实现。

在Python程序中,函数zip()可以将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回的列表长度与最短对象的相同。利用星号“*”操作符,可以将元组解压为列表。使用函数zip()的语法格式如下所示。

zip([iterable, ...])

其中,参数iterable表示一个或多个迭代器。

下面的实例文件jisuan.py演示了分别获取字典中最大值和最小值的过程。

源码路径:daima\第2章\jisuan.py

price = {
    '小米': 899,
    '华为': 1999,
    '三星': 3999,
    '谷歌': 4999,
    '酷派': 599,
    'iPhone': 5000,
}
min_price = min(zip(price.values(), price.keys()))
print(min_price)
max_price = max(zip(price.values(), price.keys()))
print(max_price)
price_sorted = sorted(zip(price.values(), price.keys()))
print(price_sorted)
price_and_names = zip(price.values(), price.keys())
print((min(price_and_names)))
# print (max(price_and_names))  error  zip()创建了迭代器,内容只能被消费一次
print(min(price))
print(max(price))
print(min(price.values()))
print(max(price.values()))
print(min(price, key=lambda k: price[k]))
print(max(price, key=lambda k: price[k]))

执行结果如图2-24所示。

图2-24 执行结果