这里有一个想法:
>>> def keyfun(word, wordorder):
... try:
... return wordorder.index(word)
... except ValueError:
... return len(wordorder)
...
>>> sorted(list1, key=lambda x: keyfun(x.split('-')[1], list2))
['Title1-Bananas', 'Title1-Oranges', 'Title1-Pear', 'Title1-Apples']
为使代码更加整洁与高效(
index
需要遍历列表以查找正确的项),建议将单词顺序定义为字典形式,例如:
```python
word_order = {
'apple': 1,
'orange': 2,
'banana': 3
}
```
这样,您可以直接通过单词来获取它的排名而不需要进行额外的遍历。
>>> wordorder = dict(zip(list2, range(len(list2))))
>>> wordorder
{'Pear': 2, 'Bananas': 0, 'Oranges': 1}
>>> sorted(list1, key=lambda x: wordorder.get(x.split('-')[1], len(wordorder)))
['Title1-Bananas', 'Title1-Oranges', 'Title1-Pear', 'Title1-Apples']