- 对一个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')
- 对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}]
- 对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'}]
- 对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}]
- 对 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')]
- 利用第三方库heapq对list 和 list of dicts 排序:
(1). 参考:python3-cookbook