python - 如何使用 Python 获取字母数字列表中的最高值?

标签 python string sorting alphanumeric

如果我有一个字符串列表,例如 ["A", "B", "1", "0", "C", "2"],我怎么能有 Python优雅地获取该列表的“最高”值 (2)?

例如,如果要将上面的列表从低到高排序,则为

[A, B, C, 0, 1, 2]

我需要抓取 2

使用sorted(),按以下方式组织列表

[0, 1, 2, A, B, C]

最佳答案

您可以为 sorted 提供自定义键,使非数字字符出现在数字之前:

>>> x = ["A", "B", "1", "0", "C", "2"]
>>> sorted(x, key = lambda item: (item.isdigit(), item))
['A', 'B', 'C', '0', '1', '2']
>>> max(x, key = lambda item: (item.isdigit(), item))
'2'

一个更通用的解决方案可能是明确指定您想要的排序类型。如果您改变了对“最高”的想法,这使得更改实现变得容易。

>>> ordering = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
>>> x = ["A", "B", "1", "0", "C", "2"]
>>> print max(x, key=ordering.index)
2

>>> #Actually, I've decided that A should be highest!
>>> ordering = "BCDEFGHIJKLMNOPQRSTUVWXYZ0123456789A"
>>> print max(x, key=ordering.index)
A

这可能比第一个解决方案慢一点,因为 index 以线性时间运行,但如果您觉得它使代码更易于理解,您可能会发现这种权衡是值得的。

关于python - 如何使用 Python 获取字母数字列表中的最高值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20909472/

相关文章:

python - 在尝试通过在 powershell 中执行代码的 python 脚本运行 print ('hello world' 时发现错误

python - Django Admin - 通过模型过滤 ManyToManyField

c# - 检查文本框是否为空

c# - Java 和 C# 的 String 实现

java - Applet 中的 Paint 方法(Java 中的排序算法)

algorithm - 为什么 QuickSort 不擅长对几乎已排序的数据进行排序

java - 如何使用带有比较器的 Java ConcurrentNavigableMap 而不是 TreeMap?

python - c++ boost python列表提取导致段错误

c - 为什么我的字符串不存储任何内容?

python - 如何从向量中删除数字?