• 列表中字符串按照某种规则排序的方法(python)


    有时候处理数据时,想要按照字符串中的数字的大小进行排序。

    譬如,存在一组记录文件,分别为‘1.dat’,'2.dat'...

    当我把该文件夹中的所有记录文件名读到一个列表中,这些字符串的排列方式为:

    如何让这些字符串按照数字排列?

    1、首先通过正则表达式,提取出字符串中的数字

    2、排序,选择built-in函数sorted进行排序

    sorted(iterable, cmp=None, key=None, reverse=False)

    iterable:是可迭代类型;
    cmp:用于比较的函数,比较什么由key决定;
    key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项;
    reverse:排序规则. reverse = True  降序 或者 reverse = False 升序,有默认值。
    返回值:是一个经过排序的可迭代类型,与iterable一样。

    所以说排序方式按照数字拍的话,key就要对应里面的数字。

    所以,这个问题只需一句话解决:

    s = ['1.dat','10.dat','5.dat']
    new = sorted(s,key = lambda i:int(re.match(r'(d+)',i).group()))
    print new
    

     得到的结果即为

     对于该操作,同样可以使用list.sort(),python2.4之后,list.sort和sorted都添加了一个key参数用来指定一个函数

    不同的地方是:内置sorted返回一个新的列表,而list.sort是对列表进行操作

    s = ['1.dat','10.dat','5.dat']
    s.sort(key = lambda i:int(re.match(r'(d+)',i).group()))
    print s
    

    作者:禅在心中

    出处:http://www.cnblogs.com/pinking/

    本文版权归作者和博客园共有,欢迎批评指正及转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    矩阵快速幂的学习(系统的学习)
    hdu3949(线性基,求第k小的异或和
    牛客网训练赛26D(xor)
    牛客网练习赛26B(简单的dp)
    Carryon的字符串
    string的各种函数(系统学习)
    约瑟夫问题(vector的使用)
    vector的学习(系统的学习)
    CodeForces
    POJ-3624-背包问题
  • 原文地址:https://www.cnblogs.com/pinking/p/6813728.html
Copyright © 2020-2023  润新知