Contents
20.1.13. 13.与字典有关的计算问题¶
#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2020/4/1 16:03
# filename: 13.与字典有关的计算问题.py
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) # (10.75, 'FB')
max_price = max(zip(prices.values(), prices.keys()))
print(max_price) # (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)) # OK
# print(max(prices_and_names)) # ValueError: max() arg is an empty sequence
print(min(prices, key=lambda k: prices[k])) # FB
print(max(prices, key=lambda k: prices[k])) # AAPL
# 利用了zip()的解决方案是通过将字典的键-值对“反转”为值-键对序列来解决这个问题的。
prices = {'AAA': 49.23, 'ZZZ': 45.23}
print(min(zip(prices.values(), prices.keys())))
print(max(zip(prices.values(), prices.keys())))