作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在这里看到了很多类似的问题,但到目前为止没有一个直接回答问题,而是在特定场景下针对提问者的问题提供了解决方法。
我想要一个关于 Python 的 Timsort 中打破关系问题的一般答案。能做到吗?如果可以的话,一般的方法是什么。
例如,获取元组列表
>>> tuples = [(2,1), (2,9), (3, 8), (1,3), (1,2), (1,1)]
我想对这些元组进行排序,使其顺序主要由每个元组中第一个值的值决定。如果我们保留reversed=False
,那么它们将按升序排序。我会用以下内容来做到这一点
>>> tuples.sort(key=lambda t: t[0])
结果将是
>>> tuples
[(1,3), (1,2), (1,1), (2,1), (2,9), (3, 8)]
问题是我能做些什么来打破前三个元素之间的联系。我想知道这通常是否可行并且适用于出现定义排序键的任何问题。
大多数时候,其他答案都会提到 Timsort 是稳定。这条规则是否意味着不可能打破联系?
最佳答案
据我了解,您希望首先对初始值进行排序,然后对第二个元组值进行排序,而不会丢失初始排序列表。
试试这个
tuples.sort(key=lambda x: (x[0], x[1]))
在本例中,x[0] 和 x[1] 分别是主排序键和辅助排序键。希望这会有所帮助。
关于Python 3 列表排序与决胜局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54300715/
对于家庭作业,我需要根据启发式比较节点,以便我可以将它们放入 TreeSet 中。但是,当两个节点的启发值相等时,我需要一些方法来打破平局。 我不允许修改提供的 Node 类,据我所知,Node 没有
我在 Python 3.3.x 中有一个 Counter 我想对其进行排序。 我知道我可以使用 .most_common(x) 但我希望键在值相同的情况下按字母顺序排序。 有什么办法可以做到这一点?设
我是一名优秀的程序员,十分优秀!