繁体   English   中英

如何在python中按字母顺序对列表进行排序?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM