【问题标题】:How do I sort a list that I have appended to in Python 3.3如何对在 Python 3.3 中附加的列表进行排序
【发布时间】:2016-04-04 15:05:24
【问题描述】:

我一直在绞尽脑汁想弄清楚:

for line in test:
    x = line.split()
    y = int(x[1])
    x.append({"Average":str(y)})
    print(x)

它的作用是将行 Average:y 附加到,例如 James 20 30 0 50 然后它将打印给用户James 0 0 0 0 {Average: 0} 这是我的问题: 我的文本文档包含多个不同的名称和数字,如下所示:

James 20 0 0 0 0
Harrison 7 0 0 0 0
George 9 0 0 0 0

如果有多个数字大于 0,我还可以计算平均值。 当我附加那个平均值时:y,我想根据他们的'y'对整个列表进行排序 所以如果是:

James 20 0 0 0 0 {Average: 20}
Harrison 7 0 0 0 0 {Average: 7}
George 9 0 0 0 0 {Average: 9}
Oliver 10 5 6 0 0 {Average: 7}

它会变成:

Harrison 7 0 0 0 0 {Average: 7}
Oliver 10 5 6 0 0 {Average: 7}
George 9 0 0 0 0 {Average: 9}
James 20 0 0 0 0 {Average: 20}

我无法弄清楚如何执行此操作,因为我将每一行逐一附加,因此如果我尝试使用 sort 命令对其进行排序,它将不起作用。我所做的是追加第一行-> 打印它-> 追加第二行-> 依此类推.... 如何根据附加的平均值对该列表进行排序?感谢阅读和帮助!

【问题讨论】:

    标签: python sorting python-3.3


    【解决方案1】:

    问题是您正在循环打印。先整理结果,再排序,再打印。

    【讨论】:

    • 我对如何处理这件事感到困惑。如果他们多次运行此代码,存储、排序然后打印,那么代码不会存储他们的数字+平均值两次吗?然后在打印时,如果要再次运行代码,它将打印它们的平均值两次,然后打印三次。你会怎么解决?另外你会怎么做呢?谢谢
    • 多人将使用一台计算机上的代码,因此有多个名称。他们分别接受测试。因此,在我上面的示例中,代码将运行 4 次以获得这些值。编辑:我只给出了我无法弄清楚的一小部分代码,这对于希望解决我的问题是必要的。
    • 文件整理打印完成后是否可以删除?
    【解决方案2】:

    已测试,希望有效。您可以使用附加功能获得更多项目。

    test = ["Harrison 20 0 0", "George 40 0 0", "Zohan 30 0 0"]
    foo = []
    for line in test:
        x = line.split()
        y = int(x[1])
        foo.append({"Name":x[0],"Average":str(y)})
        print(x)
    sorted_x = sorted(foo)
    print sorted_x
    

    【讨论】:

    • 不断收到此错误:AttributeError: 'list' object has no attribute 'items'
    • 我在文本文件中的每一行都像: ['George', '40', '0', '0', '0','0' {'Average': '0' }] (新行) ['Kim', '20', '0', '0', '0','0' {'Average': '0'}] 等等。我将如何拆分它?
    猜你喜欢
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    相关资源
    最近更新 更多