【问题标题】:How to sort list of strings by count of a certain character?如何按某个字符的计数对字符串列表进行排序?
【发布时间】:2015-09-01 11:16:06
【问题描述】:

我有一个字符串列表,我需要按照某个字符的出现对其进行排序,比如说"+"。 因此,例如,如果我有一个这样的列表:

["blah+blah", "blah+++blah", "blah+bl+blah", "blah"]

我需要得到:

["blah", "blah+blah", "blah+bl+blah", "blah+++blah"]

我一直在研究sort() 方法,但我不完全了解如何将关键参数用于复杂的订单条件。显然sort(key=count("+")) 不起作用。是否可以使用sort() 来订购我想要的列表,或者我需要为其创建一个函数?

【问题讨论】:

    标签: python list python-2.7 sorting


    【解决方案1】:

    是的,list.sort 可以做到,但您需要指定 key 参数:

    In [4]: l.sort(key=lambda x: x.count('+'))
    
    In [5]: l
    Out[5]: ['blah', 'blah+blah', 'blah+bl+blah', 'blah+++blah']
    

    在这段代码中,key 函数接受一个参数并使用str.count 来计算其中'+' 的出现次数。

    至于list.sort(key=count('+')),如果您像这样定义count 函数(使用operator.methodcaller),您可以让它工作:

    count = lambda x: methodcaller('count', x) # from operator import methodcaller
    

    【讨论】:

    • 只要记住这是到位的,不像sorted
    【解决方案2】:

    你可以使用 -

    s = ["blah+blah","blah+++blah","blah+bl+blah","blah"]
    print(sorted(s,key=lambda t: t.count('+')))
    >>["blah","blah+blah","blah+bl+blah","blah+++blah"]
    

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 2018-07-02
      • 2018-04-07
      • 2012-04-03
      • 2015-09-27
      • 2011-03-26
      • 2021-07-08
      • 1970-01-01
      • 2014-07-30
      相关资源
      最近更新 更多