使用sort进行不区分大小写的排序(list,key = str.lower)

时间:2013-12-12 05:07:29

标签: python sorting case-insensitive

我有一个模块,允许用户输入10个单词,然后按字母顺序排列并显示它们。只使用排序函数首先放大写单词,所以我使用sort(list,key = str.lower)但输出仍然不正确。代码和错误,如下:

def words_function():

    words = [input("Enter 10 words, one at a time: ") for i in range(10)]
    sorted(words, key=str.lower)
    print("Alphabetized, your words are: ", words)

    userSearch = input("What word would you like to search for?")

    if userSearch in words:
        print("Found!")
    else:
        print("Not Found!")     

words_function()

它输出了这个顺序:['Aardvark','coke','Desk','Zippy','zappy','电视','妓院','书','爸爸','狗']

上次我上英语的时候,不是字母= p。我还需要添加什么来改变我的排序或更改,使其按正确的字母顺序排列,忽略单词是小写还是大写,只是根据字母顺序排序?

Aardvark,书,妓院,可乐,爸爸,桌子,狗,电视,zappy,Zippy

4 个答案:

答案 0 :(得分:8)

sorted 返回排序列表。它不会修改列表。您必须将排序列表存储在某处

words = sorted(words, key=str.lower)

在python 2.6上

>>> words= ['Aardvark', 'coke', 'Desk', 'Zippy', 'zappy', 'Television', 'brothel', 'book', 'Dad', 'dog']
>>> sorted(words,key=str.lower)
['Aardvark', 'book', 'brothel', 'coke', 'Dad', 'Desk', 'dog', 'Television', 'zappy', 'Zippy']
>>> words
['Aardvark', 'coke', 'Desk', 'Zippy', 'zappy', 'Television', 'brothel', 'book', 'Dad', 'dog']
>>> words = sorted(words,key=str.lower)
>>> words
['Aardvark', 'book', 'brothel', 'coke', 'Dad', 'Desk', 'dog', 'Television', 'zappy', 'Zippy']

答案 1 :(得分:1)

sorted(words, key=cmp_to_key(locale.strcoll))

答案 2 :(得分:1)

您可以使用方法(内置列表)

list.sort()    

它对列表进行排序和更改

答案 3 :(得分:0)

排序(words,key = str.lower)

这不会改变单词分配,此时单词没有改变。但'words.sort(key = str.lower)'直接更改分配。     但即使你再次对列表进行了排序也很有趣。该列表并非完全按字母顺序排列,

例如

words = ['Aardvark','coke','Desk','Zippy','zappy','电视','妓院','书','爸爸','狗']

  
    
      

排序(words,key = str.lower)       ['Aardvark','book','妓院','可乐','爸爸','桌子','狗','电视','zappy','Zippy']

    
  

你可以看到'dog'在'Desk'之后

另一个例子。

words = ['a','b','c','d','E','F','A','B','b','A']

words.sort(key = str.lower)

['a','A','A','b','B','b','c','d','E','F']

.sort(key = str.lower)并不意味着要按正常的字母顺序对值进行正确排序。