Ich versuche, eine einfache Praxis Testfrage zu lösen:bestellt Wörterbuch und Sortierung
- nur die Zeilen finden, wo der Benutzer vor dem 6. September begann 2010:
die CSV-Datei Parse
.
- Als nächstes, um die Werte aus den „Worten“ Spalte in aufsteigender Reihenfolge (von Startdatum)
- Return die kompilierte „versteckt“ Phrase
Die CSV-Datei enthält 19 Spalten und 1000 Datenzeilen. Die meisten davon sind irrelevant. Wie das Problem angibt, geht es nur darum, die Spalte start_date in aufsteigender Reihenfolge zu sortieren, um das zugehörige Wort aus der Spalte "words" zu erhalten. Zusammen ergeben die Wörter die "versteckte" Phrase.
Die Daten in der Quelldatei sind im UTC-Zeitformat, also musste ich sie konvertieren. Ich bin jetzt an dem Punkt, wo ich denke, dass ich die richtigen Zeilen ausgewählt habe, aber ich habe Probleme beim Sortieren der Daten.
Hier ist mein Code:
import csv
from collections import OrderedDict
from datetime import datetime
with open('TSE_sample_data.csv', 'rb') as csvIn:
reader = csv.DictReader(csvIn)
for row in reader:
#convert from UTC to more standard date format
startdt = datetime.fromtimestamp(int(row['start_date']))
new_startdt = datetime.strftime(startdt, '%Y%m%d')
# find dates before Sep 6th, 2010
if new_startdt < '20100906':
# add the values from the 'words' column to a list
words = []
words.append(row['words'])
# add the dates to a list
dates = []
dates.append(new_startdt)
# create an ordered dictionary to sort the dates... this is where I'm having issues
dict1 = OrderedDict(zip(words, dates))
print dict1
#print list(dict1.items())[0][1]
#dict2 = sorted([(y,x) for x,y in dict1.items()])
#print dict2
Als ich print dict1
erwarte ich mit den Worten eines geordneten Wörterbuch haben, und die Daten als Elemente enthalten. Stattdessen bekomme ich mehrere geordnete Wörterbücher für jedes erstellte Schlüssel/Wert-Paar.
Das nächste Mal Gummiente Debuggen behebt es, einfach poste nicht. Es ist unwahrscheinlich, dass jemand anderes das nützlich finden wird. – jonrsharpe
Ja, natürlich würdest du! Es wäre super hilfreich gewesen * speziell für dich *. Mein Punkt ist, dass es * nur * speziell für dich nützlich ist. Wie würde eine andere Person mit dem gleichen Problem das finden oder Ihre Antwort verwenden, um ihr Problem zu lösen, es sei denn, sie schreiben * fast genau den gleichen Code *? Es geht darum, qualitativ hochwertige Fragen und Antworten zu erstellen, siehe [Tour]. Ich weiß es zu schätzen, dass du dich anstrengst, und ich bin froh, dass du dein Problem gelöst hast, aber das macht das nicht nützlich. – jonrsharpe