python字符串排序问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python字符串排序问题相关的知识,希望对你有一定的参考价值。
a='AADFabddefgilmrsss'
请将该字符串a里的单词重新排序(a-z),并且重新输出一个排序后的字符 串。(保留大小写,a与A的顺序关系为:A在a前面。例:AaBb)
求实现方式
#实现你的比较规则, 分太少,不值为你写这个函数
sorted(a, char_cmp)追问
20分够不够?不够您说话
参考技术B print( ''.join( sorted( a ,key = lambda x : ord( x.lower( ) ) * 2 + x.islower( ) ) ) )追问你好,我有以下问题想请教大侠,谢谢
key = lambda x : ord( x.lower( ) ) * 2 + x.islower( )
x是参数,根据ord( x.lower( ) ) * 2的值大小依次排序吗?
x是序列中的每一个字符,lambda计算一个散列,*2是因为计算散列要区分大小写,中间留一个空档,islower是调整相同字符串的大小写位置,改成isupper就可以变成大写在后.
本回答被提问者采纳在Python中对字符串列表进行排序[重复]
【中文标题】在Python中对字符串列表进行排序[重复]【英文标题】:Sorting a list of strings in Python [duplicate] 【发布时间】:2012-07-22 03:14:17 【问题描述】:可能重复:How do I sort a list of strings in Python?How do I sort unicode strings alphabetically in Python?
我有一个字符串列表list
,想按字母顺序对其进行排序。当我调用list.sort()
时,列表的第一部分包含按字母顺序排序的以大写字母开头的条目,第二部分包含以小写字母开头的排序条目。像这样:
Airplane
Boat
Car
Dog
apple
bicycle
cow
doctor
我搜索了一个答案,但没有找到一个可行的算法。我读到了locale
模块和sort
参数cmp
和key
。这个lambda
经常和sort
连续出现,这让我很难理解。
我如何获得:
list = ['Dog', 'bicycle', 'cow', 'doctor', 'Car', 'Boat', 'apple', 'Airplane']
到:
Airplane
apple
bicycle
Boat
Car
cow
doctor
Dog
应考虑外语字符(如ä、é、î)。
【问题讨论】:
你确定你想要的输出吗?Dog
似乎在该列表中的位置非常错误。
@ecatmur 这不是那个问题的重复,这个问题更多的是不区分大小写而不是 unicode
@ThiefMaster:谢谢,我更正了。
我认为它 is 是 ***.com/questions/36139/… 的骗子,因为该问题的公认答案解释了使用相同的语言环境感知和非语言环境感知的不区分大小写的比较技术如我的回答。
@ThiefMaster:你是对的。那里接受的答案解决了我的情况。对于 Windows 上的 setlocale
,您只需指定类似 b'English_United States'
或 b'German_Germany'
的内容。
【参考方案1】:
使用不区分大小写的比较:
>>> sorted(['Dog', 'bicycle', 'cow', 'doctor', 'Car', 'Boat',
'apple', 'Airplane'], key=str.lower)
['Airplane', 'apple', 'bicycle', 'Boat', 'Car', 'cow', 'doctor', 'Dog']
这实际上是python wiki about sorting上建议的方式:
从 Python 2.4 开始,list.sort() 和 sorted() 都添加了一个键 参数指定要在每个列表元素上调用的函数 在进行比较之前。
例如,这是一个不区分大小写的字符串比较:
>>> sorted("This is a test string from Andrew".split(), key=str.lower) ['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']
【讨论】:
这把Bär
放在Bor
之后。【参考方案2】:
这里似乎对该主题进行了很好的概述: http://wiki.python.org/moin/HowTo/Sorting/
向下滚动一个页面到这里;
例如,这是一个不区分大小写的字符串比较:
>>> sorted("This is a test string from Andrew".split(), key=str.lower)
【讨论】:
以上是关于python字符串排序问题的主要内容,如果未能解决你的问题,请参考以下文章