我有一个包含姓名和分数的CSV文件。我已经使每一行成为一个单独的列表,但是当将一个变量附加到此列表时,它实际上并没有这样做。 我的代码是:
import csv
f = open('1scores.csv')
csv_f = csv.reader(f)
newlist = []
for row in csv_f:
newlist.append(row[0:4])
minimum = min(row[1:4])
newlist.append(minimum)
print(newlist)
文件中的数据为
Person One,4,7,4
Person Two,1,4,2
Person Three,3,4,1
Person Four,2
当然输出为['Person One', '4', '7', '4', '4']
,因为最小值为4,我将其附加到列表中。但我明白了:['Person One', '4', '7', '4'], '4',
我究竟做错了什么?我希望最小值在列表中,而不是在外面但不明白。
答案 0 :(得分:1)
将min添加到每一行然后追加行本身,您将先附加切片,然后将min值添加到newlist而不是切片列表:
for row in csv_f:
row.append(min(row[1:],key=int)
newlist.append(row)
您还可以使用列表comp:
new_list = [row + [min(row[1:], key=int)] for row in csv_f]
您还需要key=int
或者您可能会发现您会得到奇怪的结果,因为您的分数/字符串将按字典顺序进行比较:
In [1]: l = ["100" , "2"]
In [2]: min(l)
Out[2]: '100'
In [3]: min(l,key=int)
Out[3]: '2'