例如,我有一个列表输入。我想返回一个列表,首先按字母“x”排序,然后按字母顺序排序。我是 Python 的新手,目前正在学习谷歌的 python 类(class)。
所以输入:['abc', 'bad', 'xzx', 'xxy']
预期的返回是:['xxy', 'xzx', 'abc', 'bad']
。
我已经尝试过的:
- 创建一个新函数来查找列表中的每个“x”字母,但这次失败了;
- 在排序中使用键函数也失败了:(
最佳答案
一些关键函数技巧:
>>> l = ['abc', 'bad', 'xzx', 'xxy']
>>> k = lambda c: -1 if c == 'x' else ord(c)
>>> sorted(l, key=lambda s: [k(c) for c in s])
['xxy', 'xzx', 'abc', 'bad']
函数 k
在应用于 'x'
时返回 -1
以及任何其他字符的 unicode 点 ( ord
)。由于这些 unicode 点(整数)反射(reflect)了字符的字典顺序并且保证大于或等于 0
,这确保了 'x'
将具有最低值。
然后排序中的关键函数comprehends对于字符串中的每个字符 c
,每个字符串都放入一个 k(c)
列表中。
关于python - 带有字母 'x' 关键参数的排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42191333/