【发布时间】:2016-01-26 23:02:33
【问题描述】:
[1,3] > [1,2]
True
好吧,听起来很合理,如果没有别的,在直观的层面上。
(3,2) <= (3,2)
True
同上。
但是是什么原因:
(4,3) >= (1,1,1)
True
如果我们在这里比较values():
{'a':1, 'b':2} < {'a':1, 'b':3}
True
那我们为什么要在这里比较keys():
{'a':1, 'b':2} < {'x':1, 'y':2}
True
我在任何地方都找不到关于这些现象的文档。
【问题讨论】:
-
字典不是序列。不要比较它们。在 Python 2 中,它会起作用,产生大部分一致但毫无意义的结果。在 Python 3 中,它会引发 TypeError。
-
另外,不要妄下结论。在您的任何一个示例中,dict 比较逻辑都没有比较
keys()或values()。 -
@user2357112 我知道有人会在我的结论跳跃时叫我出来。好的。现在解释一下正在发生什么,如果不是正在比较的键和值。
-
如果你真的想知道,you can take a look under the hood。简短的回答是结果毫无意义,产生结果根本就是设计错误。
-
而 Python 3 一直致力于修复此类错误(在这种情况下引发
TypeError)。
标签: python list dictionary tuples python-2.x