Mar*_*nto 4 python sorting string python-2.7
我试图以特定的方式命令字符串的单词:在我的代码下面输出是"MNWdeorwy"但我希望它是"deMNorWwy"(所以我需要保持字母顺序,尽管是上o小写)你能帮我理解我错在哪里,为什么?谢谢
wrd = "MyNewWord"
def order_word(s):
if s == "":
return "Invalid String!"
else:
c = sorted(s)
d = ''.join(sorted(c))
return d
print order_word(wrd)
Run Code Online (Sandbox Code Playgroud)
我想确切地说我的问题与以下内容不同:如何在Python中按字母顺序对字符串中的字母进行排序:实际上,链接中给出的答案不考虑字符串中大写字母和小写字母之间的区别.
sorted()根据每个角色的序数进行排序.大写字母的序数低于所有小写字母.如果您想要不同的行为,则需要定义自己的密钥:
c = sorted(s, key=lambda c: (c.lower(), c.islower()))
Run Code Online (Sandbox Code Playgroud)
这样,c将按排序('c', 1)并按C排序('c', 0).前两款都('d', ...)或('e', ...)等,但资本C是比小写较早(较低)c.
顺便说一句,你不应该说d = "".join(sorted(c))因为c已经排序了.做就是了d = "".join(c)