Python:对元组列表进行排序,其中元组包含对象和整数

时间:2015-09-26 23:20:41

标签: python sorting

我目前有一个元组列表,表示形式(startVertex,endVertex,edgeWeight)的有向图中的边。我希望按边权重排序此列表,并在绑定的情况下,按顶点self.value字符串的字典顺序排序,然后在startVertex值字符串之间绑定的情况下最后由endVertex self.value排序。

我已经搜索了相当数量的解决方案,但我似乎无法找到一个。我可以通过排序(list,key = itemgetter(2))或仅使用lambda函数的顶点值进行排序,但我找不到同时执行这两种操作的方法。

1 个答案:

答案 0 :(得分:2)

实际上,事实证明这是一个非常简单的解决方案。我只是在我的顶点类中添加了一个方法:

def __lt__(self, other): return self.value > other.value

并使用

进行排序
sorted(edgeList, key = itemgetter(2, 0, 1), reverse = True)

提供了我想要的行为(元组由(起始顶点,结束顶点,边缘权重)定义)。