它可以按字母順序排列字符,忽略大寫和小寫?我需要他們留在他們的情況下,所以我不能使用.lower()
或.upper()
,但我希望他們安排的信件優先,所以得到的字符串會是這樣的:如何字符串中的字符,忽略大小寫?
"LMmqRRs"
,而不是
"LMRRmqs"
它可以按字母順序排列字符,忽略大寫和小寫?我需要他們留在他們的情況下,所以我不能使用.lower()
或.upper()
,但我希望他們安排的信件優先,所以得到的字符串會是這樣的:如何字符串中的字符,忽略大小寫?
"LMmqRRs"
,而不是
"LMRRmqs"
這可以確保大寫字母先走:
s = 'mqRMRsL'
result = ''.join(sorted(s, key=lambda c:(c.lower(), c)))
# LMmqRRs
這不:
s = 'mqRMRsL'
result = ''.join(sorted(s, key=str.lower))
# LmMqRRs
這裏是一個輕微的改動BlaXpirit解決方案,使排序穩定:
def alphabet_cmp(a, b):
a_lower, b_lower = a.lower(), b.lower()
if a_lower == b_lower:
return cmp(a, b)
else:
return cmp(a_lower, b_lower)
x = 'ABcdCDab'
''.join(sorted(x, cmp=alphabet_cmp))
# 'AaBbCcDd'
'NameError:name'cmp'is not defined'。 'TypeError:'cmp'是這個函數的一個無效的關鍵字參數。見[**這**](http://docs.python.org/3/whatsnew/3.0#ordering-comparisons) –
而我的解決方案是穩定的無論如何... –
我不知道爲什麼cmp是無效的關鍵字,在Python 27中排序的文檔字符串是「排序(iterable,cmp = None,key = None,reverse = False) - >新排序列表」,但是您的解決方案更加優雅,也更穩定,我不知道爲什麼我沒有意識到,當我在發佈之前快速閱讀您的回覆時,對不起 – jcr
這可能會幫助: http://stackoverflow.com/questions/ 10269701 /不區分大小寫的排序 - 無結構化的結果 – RKumsher
您想讓排序穩定嗎? 「aA」會保留「aA」,「aa」保留「aa」),還是您希望案例具有特定的順序,無論是「aA」還是「Aa」? – DSM
我寧願讓大寫字母先出現在同一個字母的任何給定數字 – spikey273