繁体   English   中英

关于其他列表中单词的排序列表

[英]sort list with respect to words in other list

我想相对于其他列表中的单词对列表中的单词进行排序。 在这里,我的清单包含三个单词字符串Tom Cruise Gerald,我必须根据基本列表中的单词即Gerald Tom Cruise重新排列该列表。

只是寻找一种实现这一目标的最佳方法:

我的列表:

['Tom Cruise Gerald']

排序的基本列表:

['Gerald Tom Cruise']

我的清单的输出:

['Gerald Tom Cruise']
l = ["the", "dog", "jumped"]
master = ["the", "quick", "brown", "fox", "jumped", "over", "thine", "lazy", "dog"]

这是我们的清单。 为了对l进行排序,我们通常会使用l.sort() 但看! list.sort接受参数key 这个函数接受每个值并输出一个数字,我们可以将其用作订购者。 因此,让我们使用“ master的位置”:

l.sort(key=master.index)
print(l)

这给我们:

['the', 'jumped', 'dog']

成功!

您可以将dict comprehension与enumerate一起使用,以从参考列表创建关键字到索引的映射,以便您可以轻松地对给定列表进行排序,其映射索引的平均查找成本为O(1):

reference = ['Gerald', 'Tom', 'Cruise']
index = {k: i for i, k in enumerate(reference)}
print(sorted(['Tom', 'Cruise', 'Gerald'], key=index.get))

输出:

['Gerald', 'Tom', 'Cruise']

您可以创建一个排序字典来快速查找并将其用作key

data = 'Tom Cruise Gerald'.split()
sort = 'Gerald Tom Cruise'.split()
sort_dct = {d: s for d, s in zip(data, sort)}

print(sorted(data, key=sort_dct.get))

或者,如果您想返回到str

print(' '.join(sorted(data, key=sort_dct.get)))

请注意, ['Tom Cruise Gerald']是包含一个单个str元素的列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM