zoukankan      html  css  js  c++  java
  • 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')],可以看出文件已经按照字符串中出现的数字完成预想的排序效果。

      

  • 相关阅读:
    11111 Generalized Matrioshkas
    Uva 442 Matrix Chain Multiplication
    Uva 10815 Andy's First Dictionary
    Uva 537 Artificial Intelligence?
    Uva 340 MasterMind Hints
    SCAU 9508 诸葛给我牌(水泥题)
    Uva 10420 List of Conquests(排序水题)
    Uva 409 Excuses, Excuses!
    10/26
    11/2
  • 原文地址:https://www.cnblogs.com/kirago/p/4691014.html
Copyright © 2011-2022 走看看