按字典顺序对列表进行排序

时间:2013-12-04 17:36:28

标签: python sorting

在python中 - 我有一个集合列表

members = [set(1,2,3), set(2,4,1), set(1,3,2), set(2,1,3)]

我想按字典顺序对这些进行排序,而不是(如果可能的话)转换为元组。

如果他们是元组,我可以简单地使用:

members.sort()

由于在不使用iter(members[0]).next()之类的内容的情况下无法通过索引访问集合,因此我无法使用sort(key=)语法。也许我错过了一些简单的东西,可以使这种语法适用?

我的目标是尽可能避免settupleset的转化。

编辑:鉴于集合的顺序不固定,我发现这是一个有争议的问题。下面的大部分答案都涉及到集合中的一些项目。列表中的某些集合怎么样?我要求知道这种排序只是一种潜在的实现,因为不能保证内部订单。

3 个答案:

答案 0 :(得分:3)

您的请求实际上没有意义,词典排序需要定义订单(对第一个元素进行排序,如果第一个元素等同于比较第二个元素,依此类推),但set元素不是排序。

但是你可以定义你的自定义比较函数,但是你真的不清楚你要做什么(一组中没有“第一”元素)。

答案 1 :(得分:2)

>>> members = [set([1,2,3]), set([2,4,1]), set([1,3,2]), set([2,1,3])]
>>> members.sort(key=sorted)
>>> members
0: [set([1, 2, 3]), set([1, 2, 3]), set([1, 2, 3]), set([1, 2, 4])]

答案 2 :(得分:0)

  
    
      

members = [{1,2,4},{1,2,3},{1,2,3},{1,2,3},{1,2}]
      members.sort(key = lambda a:“,”。join(map(str,sorted(a))))
      会员
      [{1,2},{1,2,3},{1,2,3},{1,2,3},{1,2,4}]