Is Python's bool sorting defined?
Question:
Is the ordering of True and False well defined in Python, or is it left as an implementation detail?
From the console, I’m seeing False sort before True…but I don’t know if that’s a behavior I should rely on or not.
(I’m sure there’s some Python doc about this, but I can’t find it…)
Answers:
http://docs.python.org/2/reference/datamodel.html#the-standard-type-hierarchy
Booleans: These represent the truth values False and True. The two objects representing the values False and True are the only Boolean objects. The Boolean type is a subtype of plain integers, and Boolean values behave like the values 0 and 1, respectively, in almost all contexts, the exception being that when converted to a string, the strings “False” or “True” are returned, respectively.
This reads to me that the python language requires False < True
, False == 0
, True == 1
, True != 2
.
The same wording is retained in Python 3 as well.
We can show bool is sortable using the Python REPL, with False
being the lower value:
>>> sorted([False, True, True, False, True])
[False, False, True, True, True]
Is the ordering of True and False well defined in Python, or is it left as an implementation detail?
From the console, I’m seeing False sort before True…but I don’t know if that’s a behavior I should rely on or not.
(I’m sure there’s some Python doc about this, but I can’t find it…)
http://docs.python.org/2/reference/datamodel.html#the-standard-type-hierarchy
Booleans: These represent the truth values False and True. The two objects representing the values False and True are the only Boolean objects. The Boolean type is a subtype of plain integers, and Boolean values behave like the values 0 and 1, respectively, in almost all contexts, the exception being that when converted to a string, the strings “False” or “True” are returned, respectively.
This reads to me that the python language requires False < True
, False == 0
, True == 1
, True != 2
.
The same wording is retained in Python 3 as well.
We can show bool is sortable using the Python REPL, with False
being the lower value:
>>> sorted([False, True, True, False, True])
[False, False, True, True, True]