zoukankan      html  css  js  c++  java
  • 通过一个列表给另外一个列表排序

    通过一个列表中的顺序,给另外一个列表,或者对象排序,代码如下

    results = [
    {'a': 'FF'},
    {'a': None},
    {'a': 'BS'},
    {'a': 'TF'},
    {'a': 'BF'},
    {'a': 'TS'},
    {'a': 'BS'},
    ]


        enums = ['FF', 'TF', 'BF', 'TS', 'TB', 'BS', None] colorMap = {c: i for i, c in enumerate(enums)} results = sorted(results, key=lambda tup: colorMap.get(tup['a'], 1))


    结果为
    [{'a': 'FF'}, {'a': 'TF'}, {'a': 'BF'}, {'a': 'TS'}, {'a': 'BS'}, {'a': 'BS'}, {'a': None}]

    原理如下:

    1.使用枚举将列表转化为枚举类型
    pp = enumerate(enums)
    for i in pp:
       print(i)

    结果如下:

    (0, 'FF')
    (1, 'TF')
    (2, 'BF')
    (3, 'TS')
    (4, 'TB')
    (5, 'BS')
    (6, None)

    2.使用字典生成式,将枚举转化为字典,以枚举的名称作为字典的key值,以枚举的值作为字典的value值
    得到一个如下的字典
    {'FF': 0, 'TF': 1, 'BF': 2, 'TS': 3, 'TB': 4, 'BS': 5, None: 6}

    3.再通过sorted排序
    results = sorted(results, key=lambda tup: colorMap.get(tup['category'], 1))

    sorted函数,第一个参数是一个可迭代对象,第二个参数key,是可迭代对象来比较的值,通过方法,将对象中的key取出来进行比对。


    相关知识点:

    枚举

    什么是枚举?

    枚举类型是一中数据类型,是一些列的常量集合

    枚举类型列出所有可能的取值,枚举类型的取值不能超出定义的范围。

    如何使用枚举?

     1.定义枚举时,成员变量不能重复

     2.成员变量值相同,第二个成员是第一个成员的别名,输出的结果均是第一个成员

     3 成员变量要唯一,不能重复,可使用@unique

    枚举取值

    枚举每个成员都有名称和值

     也可以通过迭代的方式遍历成员

     __members__特殊属性,可以将成员名称与成员值一一映射

     枚举类型的特点

    枚举类型不能用=赋值符号进行赋值

    (1)枚举类型不能用=赋值符号进行赋值

                  enum weekday {sun, mou, tue, wed, thu, fri, sat } ;

                  sun=5;这是错误的

          (2)枚举成员本身就有一个序号值,默认从0开始,即0,1,2...

                   但定义时,也可以自己改变序号值,举例: enum weekday {sun=7, mou, tue, wed, thu, fri, sat } ;

                   那么序号值是7,8...逐渐+1

    匿名函数lambda

  • 相关阅读:
    asp.net -mvc框架复习(6)-基于MVC实现简单计算器
    asp.net -mvc框架复习(5)-ASP.NET MVC中的视图简单使用
    asp.net -mvc框架复习(4)-ASP.NET MVC中的约定规则
    asp.net -mvc框架复习(3)-控制器和动作方法的任务分析
    asp.net -mvc框架复习(2)-创建ASP.NET MVC 第一个程序以及MVC项目文件夹说明
    中心项目-网络连接示意图
    asp.net -mvc框架复习(1)-ASP.NET网站开发概述
    复习总结正则表达式-下
    复习总结正则表达式-上
    Http如何利用304让浏览器去更新数据
  • 原文地址:https://www.cnblogs.com/ltyc/p/15193823.html
Copyright © 2011-2022 走看看