我有一个模块,允许用户输入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
答案 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)并不意味着要按正常的字母顺序对值进行正确排序。