python - 在Python中使用自定义顺序对列表进行排序

标签 python list sorting

您好,我目前有两个列表,如下所示:

list1 = [Alpha, Beta, Charlie, Delta, Echo] 

list2 = [B, A, E, C, D]

我想使用list2对list1进行排序,我尝试过使用:

list1.sort(key=list2.index)

但是,在单词中找不到这些字母。有没有办法对 list1 进行排序而不需要全名?

最佳答案

您必须根据单词的第一个字母进行排序:

list1 = ['Alpha', 'Beta', 'Charlie', 'Delta', 'Echo'] 

list2 = ['B', 'A', 'E', 'C', 'D']

out = list(sorted(list1, key=lambda word: list2.index(word[0])))
print(out)
# ['Beta', 'Alpha', 'Echo', 'Charlie', 'Delta']
不过,

index 每次都必须迭代 list2。首先构建一个给出每个字母索引的字典可能会更有效,这样我们在排序时可以在 O(1) 中找到索引:

list1 = ['Alpha', 'Beta', 'Charlie', 'Delta', 'Echo'] 

list2 = ['B', 'A', 'E', 'C', 'D']
dict2 = {letter: index for index, letter in enumerate(list2)}

out = list(sorted(list1, key=lambda word: dict2[word[0]]))
print(out)
# ['Beta', 'Alpha', 'Echo', 'Charlie', 'Delta']

关于python - 在Python中使用自定义顺序对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59237473/

相关文章:

javascript - Python、Flask - 如何使用 DHTML uploader 加载文件

python - 如何在 Windows 的 CPython Jupyter 中使用 pypy 作为内核?

sql - 如何从包含百万个记录的数据库中选择第一个 'N'记录?

algorithm - 关于冒泡排序与归并排序

python - Python:While循环中导入函数的奇怪问题

python - 在这个例子中如何通过tensorflow进行回归?

java - 将对象存储在列表中,然后对该对象进行更改

python - 如何使用两个嵌套列表来制作字典列表?

python - 字典列表中的切片

cocoa - 按数组中包含的 int 对 NSArray 进行排序