python numeric string comparison [duplicate]

余生颓废 提交于 2019-12-13 05:36:13

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!