【发布时间】:2016-09-02 10:17:18
【问题描述】:
我正在尝试在 Python 中对一个列表进行排序,但一个列表在同一个术语中同时包含字母和数字。对字符串使用 sort 的问题是它不能正确地对数字进行排序:
2
23
3
等
list = [("a", ['8', '0']), ("a", ['7', '0b']), ("a", ['7', '0']), ("a", ['6', '0b']), ("a", ['6', '01']]
new_list = sorted(list, key=lambda i: i[1])
# works great on ints.
字母需要按数字等值排序,即:
a = 1, b = 2, c = 3, d = 4 etc
因此4.1a == 4.11
但我需要保留输出中的字母,而不仅仅是将其转换为 int。有什么想法吗?
【问题讨论】:
-
您所显示的输入的预期结果是什么?
-
写一个函数,将
i[1]转换为字符串,将字符串中的a替换为1,将b替换为2等,然后返回转换为float的字符串,并使用那就像key? -
以上听起来很完美。将尝试弄清楚如何做到这一点(我是高级 python 的新手)。
-
你能保证大于
i的字母永远不会出现在数据中吗?否则,大于i的字母会怎样?例如,j是否被视为 0 或 10?
标签: python list python-2.7 sorting