我有兴趣在python中比较单位数字符和多位数字符。比较应该产生,
'A' < 'AB' TRUE
'B' < 'AB' TRUE
'Z' < 'AB' TRUE
'AA' < 'AB' TRUE
'AC' < 'AB' FALSE
有关如何执行此操作的任何线索。字符串从最小到最大排序如下,
['A','B',....'Z','AA','AB',....'AZ','BA',....'BZ'.......]
答案 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