gpt4 book ai didi

Python:如何根据另一个列表对列表进行排序

转载 作者:太空狗 更新时间:2023-10-30 02:57:59 26 4
gpt4 key购买 nike

我想根据 list2 中的字符串对 list1 进行排序。 list1 中与 list2 不对应的任何元素都应放在正确排序的 list1 的末尾。

例如:

list1 = ['Title1-Apples', 'Title1-Oranges', 'Title1-Pear', 'Title1-Bananas']
list2 = ['Bananas', 'Oranges', 'Pear']

list1_reordered_correctly= ['Title1-Bananas','Title1-Oranges','Title1-Pear','Title1-Apples']

最佳答案

这是一个想法:

>>> 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 必须遍历列表以找到正确的项目),考虑将您的词序定义为字典,即:

>>> 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']

关于Python:如何根据另一个列表对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35362301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com