如何对这样的句子列表进行排序:
_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”之前/之后的单词?
一种方法是创建附加列表,存储在“购买”一词之前/之后的所有单词,然后根据新列表中的键对两个列表进行排序。但有没有办法在不创建额外列表的情况下实现呢?
答案 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
之前的单词,根据该单词对列表进行排序。