python 排序

  由于排序在编程应用中占有很大的比重,此次学习主要利用python中的DSU方法(decorate-sort-undecorate)。列表的sort方法和内建的sorted函数提供了一个快速、原生的DSU实现。

  具体应用实例:

  1、对字典进行排序

  

def sortedDict(xdict):
    keys = xdict.keys()
    keys.sort()
    return map(xdict.get, keys)

   通过map(xdict.get, key)比列表推导[xdict[key] for key in keys]速度提升大概20%

  2、根据对应键值或索引排序:(需要统计不同元素出现的次数,并且根据它们出现的次数安排它们的排序,比如制作一个柱状图)

  

class Hist(dict):
    
    def add(self, item, inc=1)
        self[item] = inc + self.get(item, 0)

    def counts(self):
        aux = [(self[k], k) for k in self]
        aux.sort()
        rerturn [k for v, k in aux]

   3、根据内嵌的数字将字符串排序:(举个例子:“foo2.txt”应该出现在“foo10.txt”之前,然而python默认的字符串比较是基于字母顺序的。所以默认情况下foo10.txt会出现在foo2.txt之前)

  

files = 'file123.txt file89.txt file45.txt file98.txt'
import re
re_digist = re.compile(r'(d+)')
x = [(map(int, re_digist.split(x)[1::2]), x) for x in files]
x.sort()

 此时输出的x为:

[([45], 'file45.txt'), ([89], 'file89.txt'), ([98], 'file98.txt'), ([123], 'file123.txt')],可以看出文件已经按照字符串中出现的数字完成预想的排序效果。

  

原文地址:https://www.cnblogs.com/kirago/p/4691014.html