Ich muss Daten aus einer CSV-Datei oder einem Excel-Blatt (mit Zeilen und Spalten) in ein zweidimensionales Python-Dict laden. Zum Beispiel sieht, wenn die Daten in einer Excel-Tabelle wie folgt aus:zweidimensionales Python-Dict mit gemeinsamem Speicher
name age gender location
1 Jim 18 male China
2 Ross 18 male China
3 Cara 19 female Japan
4 Ted 18 male China
Dann sollte die Ausgabe Python dict wie folgt aussehen:
data = {
1: {'name': 'Jim', 'age': 18, 'gender': 'male', 'location': 'China'},
2: {'name': 'Ross', 'age': 18, 'gender': 'male', 'location': 'China'},
3: {'name': 'Cara', 'age': 19, 'gender': 'female', 'location': 'Japan'},
4: {'name': 'Ted', 'age': 18, 'gender': 'male', 'location': 'China'}
}
Sie können sehen, dass es eine Menge von doppelten Infos sind in Dieses 2D-Dict (und für echte Daten, hat es die gleiche Bedingung), so kam ich auf die Idee, ein neues Diktat mit gemeinsamem Speicher zu entwickeln. Um genau zu sein, im obigen Beispiel möchte ich, dass mein 2-d-Diktat nur eine Kopie von {'age': 18, 'gender': 'male', 'location': 'China'}
über mehrere Zeilen speichert (diese Zeilen müssen nicht benachbart sein). Wenn wir data[1]['age']
und data[2]['age']
aufrufen, sollte es die Suche in demselben extrahierten kleinen gemeinsamen dict tun.
Ich habe den Quellcode von Python dict gelesen, und ich weiß Python dict nur Zeiger auf Schlüssel und Werte zu speichern (und in der Regel für kleine int und String-Objekt, können verschiedene Zeiger auf das gleiche Objekt zeigen). Wenn ich meine, ich möchte nur eine Kopie speichern, meine ich eine Kopie von Zeigern.
Haben Sie eine Idee, wie Sie dieses Diktat entwerfen? Vielen Dank!!!
EDIT
Sorry, ich vergessen zu erwähnen. Die Daten in diesem 2-d-Diktat sind schreibgeschützt.
Das klingt wie eine sehr schlechte Idee. Wenn Sie Jims Standort ändern, haben sich Ross und Ted plötzlich verändert. –
@Kelvin Sorry, ich habe vergessen zu erwähnen. Die Daten in diesem Diktat werden nur schreibgeschützt sein. –
Wenn es zwischen diesen Personen keine intrinsische gemeinsame Komponente gibt, klingt es nach einem [Komprimierungsalgorithmus] (https://en.wikipedia.org/wiki/ Datenkompression). Beachten Sie, dass dies im Prinzip den Zugriff auf Elemente im Wörterbuch verlangsamt - ein Kompromiss zwischen Speicherplatz und Geschwindigkeit. –