【发布时间】:2016-07-23 19:07:33
【问题描述】:
我在 python 中读取了一个日志,其中包含每一行的名称、内存、ncalls 并将其保存为元组列表,其中每个元素都是一个元组 (name, memory, ncalls) 有时需要根据名称对列表进行排序,有时需要根据内存或 ncalls 对列表进行排序。 如果我只是使用代码会出现问题
mylist=sorted(mylist, key=itemgetter(2))
列表使用所需的参数进行排序,但 python 将参数视为字符串,我得到了这个结果
item3, 45, 1
item1, 4, 12
item4, 65, 3
item2, 65, 5
想要的结果是
item3, 45, 1
item4, 65, 3
item2, 65, 5
item1, 4, 12
因为 3 和 5 小于 12
如何在不改变保存列表的方式的情况下解决这个问题?
【问题讨论】:
-
为什么字符串排序假设
12大于3? -
请重命名您的变量 -
list是一个内置函数,您将使用list = sorted(...)覆盖它 -
您的输出表明
itemgetter(2))并不意味着您输入中的每个最后一个数字,因为 Selcuk 建议 3 不会在 12 之前出现 -
@AndreaF 我知道这一点,但在您的示例中,它看起来像
5 > 12 > 3 > 1,无论是整数排序还是字符串排序,它看起来都不正确。 -
字符串排序会产生
1, 12, 3, 5。
标签: python sorting python-3.x