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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Python的hello-world: print ("Hello, Python!")、 完了 摇就完事儿...
    LunarShade阅读 5,683评论 0 0
  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,871评论 0 5
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,358评论 0 33
  • 很快同名电影将上映,我是打定主意要去看的。支持他的票房,更是为了向那些在故宫修补文物的大师致敬。 我看了记录片《我...
    韩景筱筱阅读 3,989评论 1 1

友情链接更多精彩内容