python - 如何按字母和最大数字对 CSV 文件进行排序。 python 3

标签 python sorting csv python-3.x

这是我的代码(抱歉,我知道它很乱):

import csv
with open('test.csv', 'w', newline='') as fp:
    a = csv.writer(fp, delimiter=',')
    data = [['Bob', '4', '6', '3'],
            ['Dave', '7', '9', '10'],
            ['Barry', '5', '2', '3']]
    a.writerows(data)
print("1 for for alphabetical orderwith each students highest score\n2 for highest score, highest to lowest\n3 for average score, highest to lowest")
cho_two=int(input())
class_a = open("test.csv")
csv_a = csv.reader(class_a)
a_list = []
for row in csv_a:
    row[1] = int(row[1])
    row[2] = int(row[2])
    row[3] = int(row[3])
    minimum = min(row[1:3])
    row.append(minimum)
    maximum = max(row[1:3])
    row.append(maximum)
    average = sum(row[1:3])//3
    row.append(average)
    a_list.append(row[0:9])
if cho_two == 1:
    alphabetical = [[x[0],x[6]] for x in a_list]
    print("\nCLASS A\nEach students highest by alphabetical order \n")
    for alpha_order in sorted(alphabetical):
        print(alpha_order)
        class_a.close()

这是应该输出的内容:

['Barry', 5]
['Bob', 6]
['Dave', 10]

我希望它按字母顺序输出该人获得的最高分。

它实际上输出:

['Barry', 2]
['Bob', 3]
['Dave', 5]

谢谢。

最佳答案

您在这里犯了一些错误:

首先,将平均值存储在第 5 个位置,然后检查列表中的第 6 个位置。

其次,您实际上并没有正确地从行中分割值。

minimum = min(row[1:3])

这仅获取前2个元素,您需要获取所有元素。我建议使用 row[1:]

从 1 开始读取

然后您需要修复计算平均值的代码:

average = sum(row[1:3])//3

这并不像你想象的那样!区别在于整数除法和实数除法。

然后,当您附加行时,您可能应该使用 a_list.append(row) 附加所有行。如果您需要副本,请将其全部切片。

关于python - 如何按字母和最大数字对 CSV 文件进行排序。 python 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34027078/

相关文章:

python - BeautifulSoup使用独特的CSS选择器

mysql - mysql join的结果按第三个表的平均值排序?

excel - Access VBA中的转义双引号 - INSERT INTO ... SELECT

csv - Google Apps 脚本 txt 文件 getDataAsString() 返回字符之间的 � 和方形符号

ios - 使用 .csv 文件创建对象 Objective-C

python - Pandas python : getting one value from a DataFrame

python - 使用 python mechanize 和具有随机代理支持的 urllib2

python - 将 Jupyter Notebook 导出为 HTML 时隐藏代码

database - VBScript:从 Scripting.Dictionary 中排序项目

javascript - 在 Immutable.js 中按特定键对orderedMap 进行排序