我有一个字符串列表,其中每个字符串在第二部分中包含一个日期字符串,例如:
alist = ['foo_20150901', 'bar_20150801', 'baz_20150701']
现在我想让他们按日期排序。我以为这会像这样工作:
slist = alist.sort(key =(lambda k: int(k.split('_')[-1])))
但是,打印slist会产生None
。这里有什么问题?
答案 0 :(得分:1)
查看sort
的文档, 明确 状态 * IN PLACE *并返回None
:
Docstring: L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
Type: method_descriptor
要返回已排序的列表,您需要使用sorted
代替:
In [5]: sorted??
Docstring:
Return a new list containing all items from the iterable in ascending order.
A custom key function can be supplied to customise the sort order, and the
reverse flag can be set to request the result in descending order.
Type: builtin_function_or_method
答案 1 :(得分:1)
L.sort()
对列表进行排序None
,您需要sorted
函数:
排序(可迭代,密钥=无,反向=假)
返回一个新列表,其中包含迭代中所有项目的升序。
slist = sorted(alist, key=lambda k: int(k.split('_')[-1]))
答案 2 :(得分:1)
alist = ['foo_20150901', 'bar_20150801', 'baz_20150701']
alist.sort(key =(lambda k: int(k.split('_')[-1])))
print alist
输出:
['baz_20150701', 'bar_20150801', 'foo_20150901']