2014-09-19 35 views
3

采取这类字符串的集合:排序从一个字符串的某个位置

"foo: a message" 
"bar: d message" 
"bar: b message" 
"foo: c message" 

两个字符串foo:bar:的长度是相同的,所以我想开始从5位置索引排序所以我的输出将是...

"foo: a message" 
"bar: b message" 
"foo: c message" 
"bar: d message" 

回答

7

使用key函数切片每个字符串;然后使用键生成的值进行排序。

sorted(inputlist, key=lambda s: s[5:]) 

演示:

>>> inputlist = ['foo: a message', 'bar: d message', 'bar: b message', 'foo: c message'] 
>>> sorted(inputlist, key=lambda s: s[5:]) 
['foo: a message', 'bar: b message', 'foo: c message', 'bar: d message'] 

引述sorted() documentation

指定用于提取从每个列表元素的比较关键一个参数的函数:key=str.lower。默认值是None(直接比较元素)。

+0

密钥是指什么?它是某种关键字吗? – Ogen 2014-09-19 09:44:10

+0

@Ogen'key'是一个可选参数。 [来自文档](https://docs.python.org/2/library/functions.html#sorted):“可选参数_cmp_,_key_和_reverse_的含义与'list.sort( )'方法(在[可变序列类型](https://docs.python.org/2/library/stdtypes.html#typesseq-mutable)部分描述)[...] _key_指定一个参数的函数用于从每个列表元素提取比较键:'key = str.lower'。默认值是'None'(直接比较元素)。“ – BioGeek 2014-09-19 10:57:26

相关问题