2018-04-23 python dict的排序

  1. 对一个dictionary利用value排序:
prices = {
    'ACME': 45.23,
    'AAPL': 612.78,
    'IBM': 205.55,
    'HPQ': 37.20,
    'FB': 10.75
}
d = sorted(prices, key=lambda k: prices[k], reverse=True)
>>> d   # 得到的是按照values排序得到的keys
['AAPL', 'IBM', 'ACME', 'HPQ', 'FB'] 

min_price = min(zip(prices.values(), prices.keys()))
# min_price is (10.75, 'FB')
max_price = max(zip(prices.values(), prices.keys()))
# max_price is (612.78, 'AAPL')
  1. 对list of dicts 利用dict中相同的key对应的value排序
d = [{"num":2}, {"num":1}, {"num":3}]
d_ = sorted(d, key=lambda k: k['num'])
>>> d_
[{'num': 1}, {'num': 2}, {'num': 3}]

  1. 对list of dicts 利用dict中的key排序
d = [{2:"w"}, {1:"r"}, {3:"e"}]
d_ = sorted(d, key=lambda k: list(k.keys())[0])
>>> d_
[{1: 'r'}, {2: 'w'}, {3: 'e'}]
  1. 对list of dicts 利用另外一个dict排序
sort_by_ = ['北京', '上海', '西安', '郑州']
rsp_data = [{'city': '西安', 'num': 2}, {'city': '上海', 'num': 1}, {'city': '北京', 'num': 3},{'city': '郑州', 'num': 4}]
rsp_data = sorted(rsp_data, key=lambda k: sort_by_.index(k['city']))
>>> rsp_data
[{'city': '北京', 'num': 3}, {'city': '上海', 'num': 1}, {'city': '西安', 'num': 2}, {'city': '郑州', 'num': 4}]

  1. 对 dict 利用 另外一个dict排序
dict_to_sort = {'c': 123, 'b': 'test', 'a': '-'}
dict_key = {'a': 1, 'b': 3, 'c': 2}  # The order should be "a c b"
# sort dict_to_sort by using dict_key
sorted_pair_list = sorted(dict_to_sort.items(), key=lambda x: dict_key.get(x[0]))
>>> sorted_pair_list
[('a', '-'), ('c', 123), ('b', 'test')]
  1. 利用第三方库heapq对list 和 list of dicts 排序:
    (1). 参考:python3-cookbook

你可能感兴趣的:(2018-04-23 python dict的排序)