我想按字母顺序对字符串列表进行排序。
这是我的代码:
lis =list( input("list"))
print (sorted (lis, key=str.lower))
输入:['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']
输出:[' ', ' ', ' ', ' ', ' ', "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", "'", ',', ',', ',', ',', ',', 'E', 'I', 'S', 'S', 'W', '[', ']', 'c', 'd', 'e', 'e', 'e', 'e', 'e', 'f', 'g', 'g', 'h', 'i', 'i', 'i', 'l', 'm', 'm', 'n', 'n', 'o', 'r', 's', 't', 't', 't', 't', 't', 'u', 'u', 'u', 'x']
我不知道为什么。
答案 0 :(得分:1)
与python 2 ./download/file.php?id=123456&mode=view
的作用相反,python 3 input
不再评估输入(像input
这样的行为),出于安全原因(raw_input
是一个隐藏的input
函数)
你展示的代码在python 2中运行良好,但需要对python 3进行一些调整。
在你的情况下,你需要首先eval
列表,它只解析和执行文字的安全评估(正是你需要的)或者你正在对输入字符串的字符进行排序。像这样:
ast.literal_eval
(添加import ast
lis = ast.literal_eval(input("list").lstrip())
print (sorted (lis, key=str.lower))
以便修剪前导空格(lstrip()
关注缩进)
答案 1 :(得分:0)
这是我的方法:
string=['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']
for i in range(len(string)):
string[i]=string[i].lower()
s=sorted(string)
print(s)
这样,所有 list元素都被转换为小写,然后sorted() function
对所有列表元素进行排序。输出:
['constitute', 'eflux', 'intrigue', 'sedge', 'stem', 'whim']
希望这很有用!
答案 2 :(得分:-1)
input()函数一次返回一个字符串,而不是您输入的常规列表。 所以你需要用列表中的一串项目来提供它,如下所示:
lis = input('Enter your list items seperated by a space: ')
lis = lis.split()
lis.sort(key=str.lower)
print(lis)
还有很多其他方法可以做到,但这是最受欢迎的方法。