作者cakewalks (大雪崩)
看板Python
标题Re: [问题] 关於list排序
时间Fri Jun 5 20:50:44 2009
※ 引述《dotwsc (海上生明月)》之铭言:
: ※ 引述《lauer (Enjoy it)》之铭言:
: : 想请教关於 list 型态排序
: : 今天如果是二维的 list
: : p = [ [1,3,5],
: : [6,4,2],
: : [9,4,3]]
: : 若 p.sort() 则会根据每一列的第一行比大小
: : 请问有办法能指定 要比的"行"吗?
: : 谢谢大家!
: 不知道这是不是你要的?
: [[1, 3, 5], [6, 4, 2], [9, 4, 3]]
: [[6, 4, 2], [9, 4, 3], [1, 3, 5]]
用 cmp 比较慢,而且 cmp 已经被 Python 3.0 淘汰了。
如果要依第二个元素大小排序的话
def my_key(item):
return item[1]
p.sort(key=my_key)
如果要依第二个第三个第一个元素大小排序的话
def my_key(item):
return (item[1], item[2], item[0])
p.sort(key=my_key)
如果不想定义函式,可用 lambda 或是
from operator import itemgetter
p.sort(key=itemgetter(1,2,0))
更详细的内容可以参见拙着
http://descriptor.blogspot.com/2008/12/python-idiom-sort.html
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.117.167.123
※ 编辑: cakewalks 来自: 140.117.167.123 (06/05 20:52)
1F:推 gardenest:推 06/06 11:05
2F:推 lauer:感谢分享 谢谢!!~ 06/06 20:39