Luk*_*lor -1 python sorting string list
我希望列表按照排序(列表)方法排序,但需要按字符串排序.我的意思是,不是按'abcdefghijklmnopqrstuvwxyz'排序,而是能够控制它.比如,按照'zyabxwcdvueftsghrqijpoklmn'的顺序排序,但是根据您输入的任何26个字母的字符串进行排序.我该怎么做?
sorted(list)方法将列表按字母顺序排序.如果我想要反向字母顺序,那也是相当简单的.但是说我想要一个完全自定义的字母优先权?默认值按顺序对列表进行排序'abcdefghijklmnopqrstuvwxyz'.如果我可以输入字符串,如果我可以'zyabxwcdvueftsghrqijpoklmn'根据此优先级对列表进行排序,该怎么办?所以,给定['moose', 'apple', 'zebra', 'penguin']和字符串'zyabxwcdvueftsghrqijpoklmn',我会得到['zebra', 'apple', 'penguin', 'moose'],因为字母出现在字符串中的顺序.
def make_sort_key(key_string):
# make index
index = {}
for i,ch in enumerate(key_string):
index[ch] = i
# sort any char not in index following any char in index
omitted = len(index)
val = index.get
def key_fn(s):
return [val(ch, omitted) for ch in s]
return key_fn
Run Code Online (Sandbox Code Playgroud)
然后
items = [
"abcde",
"fghij",
"fghde"
]
items.sort(key = make_sort_key("gfiabdcej"))
Run Code Online (Sandbox Code Playgroud)
结果是
['fghij', 'fghde', 'abcde']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |