【发布时间】:2014-04-21 06:35:36
【问题描述】:
我注意到 Python 允许我这样做:
>>> {1: "foo"} < {2: "bar"}
True
它让我可以对列表、双端队列等做同样的事情。< 在 Python 中应用于字典时的语义是什么?
一般来说,对于任何给定类型的集合,我在哪里可以找到< 的语义?在大多数情况下,它似乎没有在文档中找到。例如:
>>> help(dict.__cmp__)
Help on wrapper_descriptor:
__cmp__(...)
x.__cmp__(y) <==> cmp(x,y)
>>> help(cmp)
Help on built-in function cmp in module __builtin__:
cmp(...)
cmp(x, y) -> integer
Return negative if x<y, zero if x==y, positive if x>y.
我问是因为我有一个(int, dict) 形式的元组列表。我想根据第一个元素对这个数组进行排序,但是如果两个元素的第一个元素相等,那么我不关心第二个元素。我想知道myArray.sort() 是否会做一些复杂的事情,在这种情况下涉及通过字典递归,或者它是否只会返回一个任意值。
【问题讨论】:
-
那么为什么不只对第一个元素进行排序呢?
-
稍微复杂的代码。除非有必要,否则我更愿意避免复杂性。另外,我只是好奇。
-
请注意,字典在 Python 3 中不再具有可比性。如果您执行
dict1 < dict2,您将获得TypeError。在您投入大量精力了解 Python 2 如何处理它们的细节之前,请记住这一点! -
@Blckknght 谢谢!我可能永远没有理由使用 Python 3,但以防万一,了解这一点很有用。
-
@Nathaniel 从不说“从不”:)
标签: python python-2.7 python-internals