列表内嵌套元组(170W个)的排序

wklken 2012-02-20 04:16:55

遇到一个排序

[(1, 5, 1), (1, 8, 1), (1, 2, 1), (1, 15, 1), (1, 11, 1), (1, 12, 1)]

需要根据列表内元组的第二个元素进行排序,得到排序后的列表

用sorted(l,key=lambda:????)
这个怎么写?有什么更好更快的方法么?

ps:最大的可能有一百七十万个元组......
...全文
215 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fibbery 2012-02-23
  • 打赏
  • 举报
回复
期待三楼的排序时间结果!
Rlay_2 2012-02-21
  • 打赏
  • 举报
回复
In general, the key and reverse conversion processes are much faster than specifying an equivalent cmp function.
3楼的好
livelivelive 2012-02-20
  • 打赏
  • 举报
回复
list自己的sort是原地排序,中间过程不会产生新对象,是否会更快点呢。。。。
angel_su 2012-02-20
  • 打赏
  • 举报
回复
sorted(l,key=lambda x: x[1])
一般乱序下key比cmp快得多,你试试吧...
I_NBFA 2012-02-20
  • 打赏
  • 举报
回复
i3, 4G, win7, py3.14
1700K排序10次,平均1.172s,
我觉得这么大的数据量让用户等上几秒也无所谓,只要不是太频繁。
wklken 2012-02-20
  • 打赏
  • 举报
回复
幡然醒悟,晕

sorted(l,cmp=lambda a,b: a[1] - b[1])

这个解决了,问题是170W个元组,这样排序会不会太慢了......

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧