dict sort

字典排序


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')