问题
I have numerical values that are loaded from a JSON
object and are therefore all strings.
I am having issues with making numerical comparisons with these strings. The following makes no sense to me and I was hoping one of you champions could explain..
In[2]: print '100' < '45'
True
In[3]: print '99' < '45'
False
Using Python 2.7
回答1:
When comparing strings they're compared by the ascii value of the characters. '1'
has a value 49, and '4'
is 52. So '1'
is < '4'
. '9'
however is 57, so '9'
is > '4'
.
If you want to compare them numerically you could just int()
the strings first like:
print int('100') < int('45')
回答2:
It basically checks for lexicographic ordering. Check documentation here -
>>> 'b' <'a'
False
>>> 'a' < 'b'
True
In above example, a comes before b, hence 'a' <'b'
is true. But, not vica versa. Similarly '1'<'2'
.
Hence '199999999999' < '5'
is true because 1 comes before 5.
来源:https://stackoverflow.com/questions/35489619/python-numeric-string-comparison