python - 带有字母 'x' 关键参数的排序列表

标签 python python-2.7 list sorting

例如,我有一个列表输入。我想返回一个列表,首先按字母“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 )。由于这些 un​​icode 点(整数)反射(reflect)了字符的字典顺序并且保证大于或等于 0,这确保了 'x' 将具有最低值。

然后排序中的关键函数comprehends对于字符串中的每个字符 c,每个字符串都放入一个 k(c) 列表中。

关于python - 带有字母 'x' 关键参数的排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42191333/

相关文章:

java - 如何轻松地将一种类型的列表复制到另一种类型?

python - 如何使用 python 和 selenium 网络抓取具有相同类名的表数据(包括合并的单元格)

Python:将空字符串与 False 进行比较是 False,为什么?

python - 如何使用python多重处理优化压缩文件功能?

python-2.7 - PyQt5.QtWebEngineWidgets没有效果

python - 安装 deeptools 时如何解决 UnsatisfiableError?

c# - 如何检查通用列表中的空项目

python - 列表中满足条件的元素序列

python - Pandas - 将直方图桶分配给每一行

python-2.7 - Python 2.7 - 在 subprocess.py 上崩溃