我有一個字串串列,比如說['ayyaaauu', 'shhasyhh', 'shaash']和一個隨附的訂單串列['s', 'y', 'u', 'h', 'a']。
我想使用順序串列代替排序中使用的正常字母順序對字串串列進行排序。
sorted(['ayyaaauu', 'shhasyhh', 'shaash'])將回傳['ayyaaauu', 'shaash', 'shhasyhh'],按字母順序排序。
我希望 sort 函式回傳['shhasyhh', 'shaash', 'ayyaaauu'],這是訂單串列中指定的字母順序。
僅當您只考慮字串的第一個元素時,類似這樣的問題才有用。如果前面的字母相同,我想依次考慮整個字串。
PS 實際上,我使用訂單串列中的字母生成字串串列,因此字串中的所有字母都有一個“正確”的順序。
uj5u.com熱心網友回復:
您可以使用sorted(), 然后key通過使用map()將每個字母映射到其優先級來生成引數(sorted()然后使用元組比較來生成排序):
data = ['ayyaaauu', 'shhasyhh', 'shaash']
ordering = ['s', 'y', 'u', 'h', 'a']
priorities = {letter: index for index, letter in enumerate(ordering)}
result = sorted(data, key=lambda x: tuple(map(lambda y: priorities[y], x)))
# Prints ['shhasyhh', 'shaash', 'ayyaaauu']
print(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/433667.html
上一篇:使用反應鉤子更新類名
下一篇:STATA:在逗號后提取子字串
