zoukankan      html  css  js  c++  java
  • 转载:python 对字典"排序"

     

    对字典进行排序?这其实是一个伪命题,搞清楚python字典的定义---字典本身默认以key的字符顺序输出显示---就像我们用的真实的字典一样,按照abcd字母的顺序排列,并且本质上各自没有先后关系,是一个哈希表的结构:

    但实际应用中我们确实有这种排序的“需求”-----按照values的值“排序”输出,或者按照别的奇怪的顺序进行输出,我们只需要把字典转化成list或者tuple,把字典每一对键值转化为list中的两位子list或者子tuple再输出,就可以达到我们的目的:

    举例如下:

    d1 = {'a':1,'c':4,'b':2,'d':3}
    d2 = {2:1,3:4,4:2,1:5,5:3}
    d3 = {'01': {'name': '电脑', 'price': 3000}, '02': {'name': '鼠标', 'price': 50}, '03': {'name': '洗发水', 'price': 30}, '04': {'name': '微波炉', 'price': 998}, '05': {'name': '手机', 'price': 1500}}
    • 需求一:按照字典的key/value进行排序输出

    方法一:使用sorted函数

    sorted(d1.items(),key = lambda x:x[0],reverse = True)        # reverse = True:是递减顺序输出,不写默认是升序输出
    key = lambda x:x[0]表示在d1.items()的输出内容中的第一列作为排序依据,如果是按照value排序则改成x[1]即可。

    d1/d2字典比较简单,都好理解,下面来看看如何对d3这种嵌套类型的字典进行排序:

    sorted(d.items(),key=lambda x:x[1]['price'])
  • 相关阅读:
    [NOIP2010] 引水入城
    BZOJ 3038 线段树
    [Tyvj 1728]普通平衡树 5种姿势 (彩蛋)
    BZOJ 1588: [HNOI2002]营业额统计
    BZOJ 2141 排队 线段树套替罪羊
    BZOJ 3629 [JLOI2014] 聪明的燕姿 dfs
    P1546 [USACO3.1]最短网络 Agri-Net(洛谷)
    并查集详解+模板
    sync_with_stdio和cin.tie(0); cout.tie(0);
    拓扑排序详解
  • 原文地址:https://www.cnblogs.com/vincent-sh/p/12577803.html
Copyright © 2011-2022 走看看