值排序为String但我想在Python中将它们排序为数字

时间:2016-04-04 09:47:19

标签: python sorting python-3.x

我在python中读取了一个日志,其中包含每行的名称,内存和ncall 并将其保存为元组列表,其中每个元素都是元组(名称,内存,ncalls) 有时需要根据内存或ncalls按名称对列表进行排序。 如果我只是使用代码

的问题
 mylist=sorted(mylist, key=itemgetter(2)) 

使用所需的参数对列表进行排序,但是python将参数视为String,我得到了这个结果

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

如何在不更改保存列表的方式的情况下解决此问题?

1 个答案:

答案 0 :(得分:3)

解决方案是将key定义为将第三项转换为int的lambda:

sorted_data = sorted(list, key=lambda t: int(t[2]))