Ich habe eine einfache CSV-Datei:eine dict Liste als Zeilen in CSV Schreiben
101,8
102,10
102,6
103,5
104,0
mit doppelten Einträgen für row [0] auf der zweiten und dritten Zeile und ich die letzte (oder untere Reihe halten wollen [1] Wert) duplizieren. Der einzige Weg, wie ich herausfinden konnte, wie es funktioniert, war die Verwendung von dict() zum Sortieren, aber jetzt habe ich Probleme beim Schreiben in eine CSV-Datei mit dem richtigen Format. Mein Code:
from operator import itemgetter
from pprint import pprint
import csv
with open('cards1.csv', 'rb') as csvfile:
reader = csv.reader(csvfile, delimiter=',')
with open('cards2.csv', 'wb') as csvfile1:
writer = csv.writer(csvfile1, delimiter=',')
rows = iter(reader)
sort_key = itemgetter(0)
sorted_rows = sorted(rows, key=sort_key)
unique_rows = dict((row[0], row) for row in sorted_rows)
pprint (unique_rows)
writer.writerows(unique_rows)
die druckt:
{'101': ['101', '8'],
'102': ['102', '6'],
'103': ['103', '5'],
'104': ['104', '0']}
aber schreibt meine Dateien wie:
1,0,2
1,0,3
1,0,1
1,0,4
wo, wie ich es einfach möchte das Duplikat in Reihe entfernen [0] mit dem größten Wert in Zeile [1]. Danke (übrigens, die Reihenfolge der erstellten csv ist nicht kritisch)
'writer.writerows (unique_rows.values ())' - vorausgesetzt, die Reihenfolge, in der die Zeilen gedruckt out ist egal. – SuperSaiyan
Ich bin verwirrt über das, was Sie wollen, die Ergebnisse zu sein. Du sagst, du willst "den größten Wert in' row [1] '" - ich sehe nur einen einzelnen Wert in 'row [1]'. Von Ihrem ersten csv-Dateibeispiel erwarten Sie nur die Werte von 8, 10, 6, 5, 0? –