Python list的多列排序

Python 中的排序真的很方便
你可以使用alist.sort()或者sorted(alist)进行排序。不同的是,前者会改变原来list的顺序。
在python中你可以简单的指定key则可以按照某一列排序

#默认顺序
>>> l
[('aa', '2'), ('aa', '1'), ('bb', '1'), ('dd', '3'), ('cc', '4')]
 
#普通排序,默认会按顺序进行排序
>>> sorted(l)
[('aa', '1'), ('aa', '2'), ('bb', '1'), ('cc', '4'), ('dd', '3')]
 
#指定排序的优先级,在这里你可以看到多列排序只需要用逗号隔开即可
>>> from operator import itemgetter, attrgetter
>>> sorted(l, key=itemgetter(1, 0))
[('aa', '1'), ('bb', '1'), ('aa', '2'), ('dd', '3'), ('cc', '4')]

对List里的dict排序,key=lambda x:x[‘b’]。b为你想排序的列

>>> l = [{'a':'fatkun', 'b':23}, {'a':'ken', 'b':21}]
>>> sorted(l, key=lambda x:x['b'])
[{'a': 'ken', 'b': 21}, {'a': 'fatkun', 'b': 23}]

这样的排序方法实在是太简单了~~另外如果需要更复杂的方法,可以使用cmp参数,自己写一个方法比较。

参考文章:
http://wiki.python.org/moin/HowTo/Sorting/




fatkun

15条评论


You can leave the first : )



发表评论

电子邮件地址不会被公开。