【问题标题】:how to sort list in alphabetical order in python?如何在python中按字母顺序对列表进行排序?
【发布时间】:2020-07-25 00:36:43
【问题描述】:

我有一个程序,我在其中接收一个 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”

【问题讨论】:

标签: python list


【解决方案1】:

问题是line.split(" ")line 中创建了一个单词列表,但myList.append 将此列表作为一个新的single 项添加到myList(因此您最终会得到一个列表而不是单词列表)。您可能想要的是:

myList.extend(line.split(" "))

【讨论】:

    【解决方案2】:

    您可能应该阅读整个文件,而不是一次阅读一行:

    with open(filename) as f:
        words = f.read().split()
    words.sort()
    

    这使用split 的默认值,它在空格、换行符或任何其他空白处分割。

    【讨论】:

      【解决方案3】:

      从我观察到的问题是你的单词列表在一个列表中,

      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(" "))
      

      【讨论】:

        【解决方案4】:

        extend 属性有效:

        filename = open(input("Enter the input file name: "))
        myList =[]
        for line in filename:
            myList.extend(line.split(" "))
        myList.sort()
        print(myList)
        

        【讨论】:

          【解决方案5】:

          Python 有两个排序函数 - 一个对列表进行就地排序,这是您在代码中所期望的,另一个是保留原始列表并返回一个排序列表(这是您正在使用的)。 iirc 另一个函数称为“排序”-但现在您有了查找它所需的信息。这可能也是 stackoverflow 中先前提出的问题,我鼓励您查找并链接到其他问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-05-02
            • 2014-02-08
            • 1970-01-01
            • 2023-04-01
            相关资源
            最近更新 更多