zoukankan      html  css  js  c++  java
  • python随笔记

    先抛出一些问题吧

    1、Python - TypeError: 'int' object is not iterable

    我的代码为

    .....
    d = list(range(len(column)))
    for i, row in enumerate(column):
        ......
        d[i] = nrow
    headers =[......]
    export(headers, d)
    

      export 核心代码为

    tab = tablib.Dataset(*datas, headers=headers)
            with open('output_final20180403-test.csv', 'wb') as f:
                f.write(tab.xls)
    

      

    tablib.Dataset附近报错TypeError: 'int' object is not iterable,想来想去也想不出啥问题,最后调试查看d 内容,发现有些数据类型为list,有些为int ,明白过来就是d 内容有问题。

    Python:使用lambda应对各种复杂情况的排序,包括list嵌套dict

    一、需要用到的函数

    需要用到的函数很少,基本上就是sorted()lambda

    sorted()

    sorted()函数原型:

    Python
    sorted(iterable[,key][,reverse])
    

      

    可见sorted()可以接受3个参数,需要排序的变量必不可少,然后是key指定排序的元素,reverse指定是否逆序。

    lambda

    lambda实际上就是匿名函数

    一般形式:

    Python
    lambda arguments: expression
    

      

    写成函数形式就是

    def <lambda>(arguments):
        return expression

    lambdasorted()key参数结合就有意想不到的效果了。

    二、各种排序

    1.简单list排序

    Python
    lis = ['a', 'b', 'c']
    print(sorted(lis))
    # ['a', 'b', 'c']
    print(sorted(lis, reverse=True))
    # ['c', 'b', 'a']

    2.dict的key排序

    Python
    dic = {'c': 1, 'b': 2, 'a': 3}
    print(sorted(dic))
    # ['a', 'b', 'c']
    print(sorted(dic, reverse=True))
    # ['c', 'b', 'a']

    3.dict的value排序

    Python
    dic = {'c': 1, 'b': 2, 'a': 3}
    print(sorted(dic, key=lambda k: dic[k]))
    # ['c', 'b', 'a']
    print(sorted(dic, key=lambda k: dic[k], reverse=True))
    # ['a', 'b', 'c']

    4.list内嵌套list排序

    Python
    lis = [[4, 2, 9], [1, 5, 6], [7, 8, 3]]
    print(sorted(lis, key=lambda k: k[0]))
    # [[1, 5, 6], [4, 2, 9], [7, 8, 3]]
    print(sorted(lis, key=lambda k: k[1]))
    # [[4, 2, 9], [1, 5, 6], [7, 8, 3]]
    print(sorted(lis, key=lambda k: k[2]))
    # [[7, 8, 3], [1, 5, 6], [4, 2, 9]]
    print(sorted(lis, key=lambda k: k[0], reverse=True))
    # [[7, 8, 3], [4, 2, 9], [1, 5, 6]]

    5.dict内嵌套dict排序

    Python
    dic = {
        'a': {'x': 3, 'y': 2, 'z': 1},
        'b': {'x': 2, 'y': 1, 'z': 3},
        'c': {'x': 1, 'y': 3, 'z': 2},
    }
    print(sorted(dic, key=lambda k: dic[k]['x']))
    # ['c', 'b', 'a']
    print(sorted(dic, key=lambda k: dic[k]['y']))
    # ['b', 'a', 'c']
    print(sorted(dic, key=lambda k: dic[k]['z']))
    # ['a', 'c', 'b']
    print(sorted(dic, key=lambda k: dic[k]['x'], reverse=True))
    # ['a', 'b', 'c']
    6.list内嵌套dict排序
    Python
    lis = [
        {'x': 3, 'y': 2, 'z': 1},
        {'x': 2, 'y': 1, 'z': 3},
        {'x': 1, 'y': 3, 'z': 2},
    ]
    print(sorted(lis, key=lambda k: k['x']))
    # [{'z': 2, 'x': 1, 'y': 3}, {'z': 3, 'x': 2, 'y': 1}, {'z': 1, 'x': 3, 'y': 2}]
    print(sorted(lis, key=lambda k: k['y']))
    # [{'z': 3, 'x': 2, 'y': 1}, {'z': 1, 'x': 3, 'y': 2}, {'z': 2, 'x': 1, 'y': 3}]
    print(sorted(lis, key=lambda k: k['z']))
    # [{'z': 1, 'x': 3, 'y': 2}, {'z': 2, 'x': 1, 'y': 3}, {'z': 3, 'x': 2, 'y': 1}]
    print(sorted(lis, key=lambda k: k['x'], reverse=True))
    # [{'z': 1, 'x': 3, 'y': 2}, {'z': 3, 'x': 2, 'y': 1}, {'z': 2, 'x': 1, 'y': 3}]

    7.dict内嵌套list排序

    Python
    dic = {
        'a': [1, 2, 3],
        'b': [2, 1, 3],
        'c': [3, 1, 2],
    }
    print(sorted(dic, key=lambda k: dic[k][0]))
    # ['a', 'b', 'c']
    print(sorted(dic, key=lambda k: dic[k][1]))
    # ['b', 'c', 'a']
    print(sorted(dic, key=lambda k: dic[k][2]))
    # ['c', 'b', 'a']
    print(sorted(dic, key=lambda k: dic[k][0], reverse=True))
    # ['c', 'b', 'a']

    三、其他更深层嵌套排序

    更深层嵌套排序方法和上面介绍的大同小异,实际就是lambda的操作;需要注意的就是dict的排序只会取其key,所以需要lambda首先将其转换为value才能操作value排序。

    排序文章摘自https://www.polarxiong.com/archives/Python-%E4%BD%BF%E7%94%A8lambda%E5%BA%94%E5%AF%B9%E5%90%84%E7%A7%8D%E5%A4%8D%E6%9D%82%E6%83%85%E5%86%B5%E7%9A%84%E6%8E%92%E5%BA%8F-%E5%8C%85%E6%8B%AClist%E5%B5%8C%E5%A5%97dict.html

     

  • 相关阅读:
    SCI写作经典替换词,瞬间高大上!(转)
    最佳化常用测试函数 Optimization Test functions
    算法复杂度速查表
    VS 代码行统计
    CPLEX IDE 菜单栏语言设置( 中文 英文 韩文 等多国语言 设置)
    如何从PDF文件中提取矢量图
    Matlab无法打开M文件的错误( Undefined function or method 'uiopen' for input arguments of type 'char)
    visual studio 资源视图 空白 解决方案
    MFC DialogBar 按钮灰色不响应
    嗨翻C语言笔记(二)
  • 原文地址:https://www.cnblogs.com/unicorn2105/p/8712080.html
Copyright © 2011-2022 走看看