[英]how to sort list in alphabetical order in python?
我有一个程序,我接收一个 txt 文件并将文本分解成单个单词并将它们放入一个列表中。 下一部分是按字母顺序对列表进行排序并打印出来。
到目前为止,我有一个文本文件,上面写着:“敏捷的棕色狐狸跳过了懒惰的狗”
到目前为止我的程序看起来像:
file = input("Enter File Name: ")
myList =[]
readFile = open(file, 'r')
for line in readFile:
myList.append(line.split(" "))
myList.sort()
print(myList)
问题是,当我运行程序时,正在创建列表并填充每个单词,但是当它被打印出来时,它没有按字母顺序排序。 我也试过print(myList.sort())
并且唯一打印的是“none”
问题在于line.split(" ")
在line
创建了一个单词列表,但是myList.append
将此列表作为一个新的单个项目添加到 myList 中(因此您最终会得到一个列表列表而不是单词列表)。 你可能想要的是:
myList.extend(line.split(" "))
您可能应该阅读整个文件而不是一次一行:
with open(filename) as f:
words = f.read().split()
words.sort()
这使用split
的默认值,它在空格、换行符或任何其他空白处进行split
。
从我观察到的问题是你的单词列表在一个列表中,
myList = [[“the”, “quick”, “brown”, “fox”, “jumps”, “over”, “the”, “lazy”, “dog”]]。
所以代替
for line in readFile:
myList.append(line.split(" "))
你应该写
for line in readFile:
myList = line.split(" "))
扩展属性工作:
filename = open(input("Enter the input file name: "))
myList =[]
for line in filename:
myList.extend(line.split(" "))
myList.sort()
print(myList)
Python 有两个排序函数 - 一个对列表进行就地排序,这是您在代码中所期望的,另一个保持原始列表完好无损并返回一个排序列表(这是您正在使用的)。 iirc 另一个函数被称为“排序”——但现在你有了查找它所需的信息。 这可能也是以前在 stackoverflow 中提出的问题,我鼓励您查找并链接到其他问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.