对集合列表进行排序

时间:2011-08-30 12:01:15

标签: python

我有一个我想要执行交集的集合列表。

是否有一种有效的方法按长度对这些集合进行排序,以优化计算?

2 个答案:

答案 0 :(得分:8)

key的{​​{1}}参数允许自定义排序键。使用sort可以解决问题:

len

如果您想要最长的设置,请使用l=<list_of_sets> l.sort(key=len) 参数:

reverse

例如:

l.sort(key=len, reverse=True)

更新:今天学到的东西 - lambda不是必需的,因为>>> l=[set((1,2,5,6,7)), set((1,2,3,4,5,6,7)), set((1,)), set((1,2,3))] >>> l [set([1, 2, 5, 6, 7]), set([1, 2, 3, 4, 5, 6, 7]), set([1]), set([1, 2, 3])] >>> l.sort(key=len) >>> l [set([1]), set([1, 2, 3]), set([1, 2, 5, 6, 7]), set([1, 2, 3, 4, 5, 6, 7])] >>> l.sort(key=len, reverse=True) >>> l [set([1, 2, 3, 4, 5, 6, 7]), set([1, 2, 5, 6, 7]), set([1, 2, 3]), set([1])] 没有额外的参数。因此,len相当于l.sort(lambda x:len(x))。谢谢,Eugene Homyakov

答案 1 :(得分:7)

如果L是集合列表

sorted(L, key=len, reverse=True)

或排序

L.sort(key=len, reverse=True)