python列表区分大小写_python - 不区分大小写的列表排序,而不降低结果?

python - 不区分大小写的列表排序,而不降低结果?

我有一个像这样的字符串列表:

['Aden', 'abel']

我想对项目进行排序,不区分大小写。所以我想得到:

['abel', 'Aden']

但我与sorted()或list.sort()相反,因为大写字母出现在小写之前。

我怎么能忽略这个案子呢? 我已经看到了涉及降低所有列表项的小写的解决方案,但我不想更改列表项的大小写。

6个解决方案

144 votes

以下适用于Python 2:

sorted_list = sorted(unsorted_list, key=lambda s: s.lower())

它适用于普通和unicode字符串,因为它们都有str.lower方法。

在Python 2中,它适用于普通字符串和unicode字符串的混合,因为这两种类型的值可以相互比较。 但是Python 3不能像这样工作:你无法比较字节字符串和unicode字符串,所以在Python 3中你应该做的是理智的事情,只对一种字符串的列表进行排序。

>>> lst = ['Aden', u'abe1']

>>> sorted(lst)

['Aden', u'abe1']

>>> sorted(lst, key=lambda s: s.lower())

[u'abe1', 'Aden']

从python 3.3开始,还有str.lower方法专为无壳匹配而设计,可用于代替str.lower:

sorted_list = sorted(unsorted_list, key=lambda s: s.casefold())

jpp answered 2019-07-26T21:30:16Z

41 votes

>>> x = ['Aden', 'abel']

>>> sorted(x, key=str.lower) # Or unicode.lower if all items are unicode

['abel', 'Aden']

在Python 3中,str是unicode,但在Python 2中,您可以使用这种更通用的方法,它适用于str和unicode:

>>> sorted(x, key=lambda s: s.lower())

['abel', 'Aden']

jamylak answered 2019-07-26T21:30:41Z

9 votes

你也可以试试这个:

>>> x = ['Aden', 'abel']

>>> x.sort(key=lambda y: y.lower())

>>> x

['abel', 'Aden']

Ashwini Chaudhary answered 2019-07-26T21:31:00Z

3 votes

在python3中你可以使用

list1.sort(key=lambda x: x.lower()) #Case In-sensitive

list1.sort() #Case Sensitive

major answered 2019-07-26T21:31:25Z

1 votes

我这样做是为了Python 3.3:

def sortCaseIns(lst):

lst2 = [[x for x in range(0, 2)] for y in range(0, len(lst))]

for i in range(0, len(lst)):

lst2[i][0] = lst[i].lower()

lst2[i][1] = lst[i]

lst2.sort()

for i in range(0, len(lst)):

lst[i] = lst2[i][1]

然后你就可以调用这个函数:

sortCaseIns(yourListToSort)

Alexey Gorozhanov answered 2019-07-26T21:31:56Z

-2 votes

试试这个

def cSort(inlist, minisort=True):

sortlist = []

newlist = []

sortdict = {}

for entry in inlist:

try:

lentry = entry.lower()

except AttributeError:

sortlist.append(lentry)

else:

try:

sortdict[lentry].append(entry)

except KeyError:

sortdict[lentry] = [entry]

sortlist.append(lentry)

sortlist.sort()

for entry in sortlist:

try:

thislist = sortdict[entry]

if minisort: thislist.sort()

newlist = newlist + thislist

except KeyError:

newlist.append(entry)

return newlist

lst = ['Aden', 'abel']

print cSort(lst)

产量

['abel', 'Aden']

Mirage answered 2019-07-26T21:32:24Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值