比较python中的字符串

时间:2014-02-25 05:59:29

标签: python string python-3.x

我有兴趣在python中比较单位数字符和多位数字符。比较应该产生,

'A' < 'AB'  TRUE
'B' < 'AB'  TRUE
'Z' < 'AB'  TRUE
'AA' < 'AB' TRUE
'AC' < 'AB' FALSE

有关如何执行此操作的任何线索。字符串从最小到最大排序如下,

['A','B',....'Z','AA','AB',....'AZ','BA',....'BZ'.......]

3 个答案:

答案 0 :(得分:4)

您希望先按长度进行比较,然后按字典顺序进行比较。

def comparison(x):
    return len(x), x

comparison返回一个两项元组。先是len(x),然后是x。这些按顺序排序

使用您的输入:

>>> comparison('A') < comparison('AB')
True
>>> comparison('B') < comparison('AB')
True
>>> comparison('Z') < comparison('AB')
True
>>> comparison('AA') < comparison('AB')
True
>>> comparison('AC') < comparison('AB')
False

答案 1 :(得分:3)

按长度比较,然后按字典顺序进行比较:

def compare_key(string):
    return len(string), string

if compare_key(s1) < compare_key(s2):
    do_something()
elif compare_key(s1) > compare_key(s2):
    do_other_thing()
else:
    do_third_thing()

答案 2 :(得分:1)

其他答案很酷。这个只返回1,-1和0。

def compare(a,b):
    d = len(a) - len(b)
    if d==0:
        if a < b: return -1
        if a > b: return 1
        return 0
    return 1 if d>0 else -1