簡體   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