gpt4 book ai didi

python - 排序 : How to treat special character greater than alphabetical in Python 2?

转载 作者:太空狗 更新时间:2023-10-29 23:58:30 24 4
gpt4 key购买 nike

目前 Python sort()sorted() 给我这个:

>>> sorted(a, reverse=True, key=lambda s: re.sub('[\[\]]', '', s).lower())
[u'Category123', u'[Cat@123]', u'CAT']

但我需要:

[u'[Cat@123]', u'Category123', u'CAT']

我想要像这样的字符:!@#$%^&* 可以被排序为大于字母字符。谢谢。

编辑:除了公认的答案外,我发现这可以解决我的问题:

>>> sorted(a, reverse=True, key=lambda s:s.upper())
[u'[Cat@123]', u'Category123', u'CAT']

最佳答案

key 函数返回两个值,第一个是 bool 值,检查字符串中是否存在任何特殊字符,第二个是被替换的字符串本身。

>>> def func(s):
subbed = re.sub('[\[\]]', '', s).lower()
return any(c in '!@#$%^&*' for c in s), subbed
...
>>> lst = [u'Category123', u'[Cat@123]', u'CAT']
>>> sorted(lst, reverse=True, key=func)
[u'[Cat@123]', u'Category123', u'CAT']

所以,基本上我们是这样排序的:

>>> new_lst = [(False, 'category123'), (True, 'cat@123'), (False, 'cat')]
>>> sorted(new_lst, reverse=True)
[(True, 'cat@123'), (False, 'category123'), (False, 'cat')]

关于python - 排序 : How to treat special character greater than alphabetical in Python 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31623777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com