str*_*ter 1 python sorting python-2.7
假设我有一个不同顺序的字母表:{H,V,R,L,D,A}.现在我想'HV'按照这个顺序订购字符串.我期待的东西应该是这样的:
$ alphabet = 'HVRLDA'
$ sorted(['RL','HH','AH'], key=lambda word: [alphabet.index(c) for c in word])
['HH','RL','AH']
Run Code Online (Sandbox Code Playgroud)
这是根据Python中的自定义字母对Sorting字符串值中已经提到的任务.如果其中一个字符串包含此字母表外的字符,则脚本将中止并显示错误消息:
ValueError: substring not found
Run Code Online (Sandbox Code Playgroud)
我希望Python根据它们的ASCII代码处理非出现的字符.在这个意义上,其余字母应附加到此字母表中.
感谢您的回复,我希望这个问题也可以帮助其他人.
c如果字符不存在,您可以使用条件表达式返回ASCII代码alphabet:
sort(['RL','HH','DA','AH'],
key=lambda word: [alphabet.index(c) if c in alphabet else ord(c) for c in word])
Run Code Online (Sandbox Code Playgroud)
我会使用一个字典进行alphabet替代,不过,这样你就可以用dict.get()在这里:
alphabet = {'H': 0, 'V': 1, 'R': 2, 'L': 3, 'D': 4, 'A': 5}
sort(['RL','HH','DA','AH'],
key=lambda word: [alphabet.get(c, ord(c)) for c in word])
Run Code Online (Sandbox Code Playgroud)
从输入字符串生成该字典很容易:
alphabet = {c: i for i, c in enumerate(alphabet_string)}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1572 次 |
| 最近记录: |