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/Tony-zhangl/p/4691014.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值