prices = {
"ACME": 45.23,
"AAPL": 612.78,
"IBM": 205.55,
"HPQ": 37.20,
"FB": 10.75
}
min_price = min(zip(prices.values(), prices.keys()))
print(min_price)
# min_priceis (10.75, 'FB')
max_price = max(zip(prices.values(), prices.keys()))
print(max_price)
# max_priceis (612.78,'AAPL')
prices_sorted = sorted(zip(prices.values(), prices.keys()))
print(prices_sorted)
# [(10.75, 'FB'), (37.2, 'HPQ'), (45.23, 'ACME'), (205.55, 'IBM'), (612.78, 'AAPL')]
需要注意的是 zip() 函数创建的是一个只能访问一次的迭代器。
比如,下面的代码就会产生错误:
prices_and_names = zip(prices.values(), prices.keys())
print(min(prices_and_names))
# print(max(prices_and_names))
# ValueError: max() arg is an empty sequence
需要注意的是在计算操作中使用到了(值,键)对。
当多个实体拥有相同的值的时候,会根据键的排序返回结果。
prices = {"AAA": 45.23, "ZZZ": 45.23}
print(min(zip(prices.values(), prices.keys())))
# (45.23, 'AAA')
print(max(zip(prices.values(), prices.keys())))
# (45.23, 'ZZZ')