2016-03-21 22 views
1

名前とスコアを含むCSVファイルがあります。私は各行を別々のリストにしましたが、このリストに変数を追加するときには実際にはそれをしません。私のコードがある こと:Python:リストを追加しても実際に追加されませんか?

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 

された状態で、最低は私がリストに追加しています4、であると確かに出力は['Person One', '4', '7', '4', '4']だろう。しかし、私はこれを得ます:['Person One', '4', '7', '4'], '4', 私は間違って何をしていますか?私は最小限を外ではなくリストの中に入れたいが、理解しない。

for row in csv_f: 
    row.append(min(row[1:],key=int) 
    newlist.append(row) 

ます。また、使用することができます

+0

minを入れるには、 'row [0:4]'でリストを追加し、そのリストに追加するには、 'min(row [1:4]、key = int ) ' –

+0

私はファイルからデータを読み込んでリストを作成していました。そのリストに値を追加したかったのです。 – Joseph

答えて

1

が各行に分を追加し、その行自体を追加し、あなたがいないスライスリストにnewlistする分値を加算し、その後最初のスライスのリストを追加していますリスト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' 
関連する問題