如何按特定字符的数量对字符串列表进行排序?

Pig*_*gna 5 python sorting list python-2.7

我有一个字符串列表,我需要通过某个字符的外观来命令它,比方说"+".所以,例如,如果我有这样的列表:

["blah+blah", "blah+++blah", "blah+bl+blah", "blah"]
Run Code Online (Sandbox Code Playgroud)

我需要得到:

["blah", "blah+blah", "blah+bl+blah", "blah+++blah"]
Run Code Online (Sandbox Code Playgroud)

我一直在研究这种sort()方法,但我不完全了解如何将密钥参数用于复杂的订单标准.显然sort(key=count("+"))不起作用.可以像我想要的那样订购列表,sort()还是我需要为它制作一个功能?

vau*_*tah 11

是的,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']
Run Code Online (Sandbox Code Playgroud)

在此代码key函数中,接受单个参数并用于str.count 计算其中的出现次数'+'.

至于如果你定义像这样的函数list.sort(key=count('+'))可以让它工作:countoperator.methodcaller

count = lambda x: methodcaller('count', x) # from operator import methodcaller
Run Code Online (Sandbox Code Playgroud)

  • 请记住,这是到位的,与“已排序”不同。 (2认同)