问题
怎样在数据字典中执行一些计算操作(比如求最小值、最大值、排序等等)?
prices = {
'ACME': 45.23,
'AAPL': 612.78,
'IBM': 205.55,
'HPQ': 37.20,
'FB': 10.75
}
# 为了对字典执行计算操作,通常需要使用Zip()函数先将键和值反转过来。
min_price = min(zip(prices.values(), prices.keys()))
max_price = max(zip(prices.values(), prices.keys()))
print(min_price) # ->(10.75, 'FB')
print(max_price) # ->(612.78, 'AAPL')
#可以使用zip()和sorted()函数来排序字典数据:
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)) # ->(10.75, 'FB')
# print(max(prices_and_names)) # ->ValueError: max() arg is an empty sequence
print("***************************")
# min() 和 max() 函数中提供 key 函数参数来获取最小值或最大值对应的键的信息。
print(min(prices,key=lambda k:prices[k]))
# 但是想要得到最小的值,又得执行一次查询操作。
print(prices[min(prices,key=lambda k:prices[k])]) # ->10.75
print("***************************")
print(min(zip(prices.values(),prices.keys()))) # ->(10.75, 'FB')
参考文档:《python cookbook(第3版)高清中文完整版(###).pdf》