基于特定子字符串的索引对字符串列表进行排序

时间:2017-08-06 04:35:56

标签: python string list sorting

如何对这样的句子列表进行排序:

_list = ["i want to buy a car", 
         "never buy a carpet", 
         "i need to buy more stuff", 
         "i don't want to buy it"]

基于单词“buy”之前/之后的单词?

一种方法是创建附加列表,存储在“购买”一词之前/之后的所有单词,然后根据新列表中的键对两个列表进行排序。但有没有办法在不创建额外列表的情况下实现呢?

1 个答案:

答案 0 :(得分:3)

您不需要任何额外的列表。您可以使用list_.sort

致电key=callback
def foo(x):
    l = x.lower().split()
    return l[l.index('buy') - 1]

list_.sort(key=foo)
# ['never buy a carpet', 'i want to buy a car', 'i need to buy more, ...]

这假设每个字符串中都存在单词buy,而字符串中的第一个单词。可能需要进行额外检查,您可以为此修改foo。函数foo返回buy之前的单词,根据该单词对列表进行排序。