2017-02-23 3 views
1

Ich muss Daten effizient in etwas speichern, das einem "Wörterbuch von Sätzen" ähneln würde, z. ein Wörterbuch mit mehreren (eindeutigen) Werten haben, die mit jedem eindeutigen Schlüssel übereinstimmen. Die Quelle meiner Daten wäre ein (nicht sehr gut) strukturiertes XML.Erstellen eines "Wörterbuchs von Sätzen"

Meine Idee ist: Ich werde durch eine Reihe von Elementen suchen und Schlüssel finden. Wenn der Schlüssel nicht vorhanden ist, fügen Sie ihn dem Wörterbuch hinzu, falls er bereits existiert, fügen Sie einfach einen neuen Wert in den entsprechenden Schlüssel ein.

Und das Ergebnis wäre so etwas wie:

{ 
'key1': {'1484', '1487', 1488', ...} 
'key2': {'1485', '1486', '1489', ...} 
'key3': {'1490', '1491', '1492', ...} 
... 
} 

Ich brauche für unterwegs neue Schlüssel hinzuzufügen. Ich muss eindeutige Werte in jeden Satz schieben. Ich muss in der Lage sein, das ganze Wörterbuch zu durchlaufen.

Ich bin mir nicht sicher, ob das überhaupt machbar ist, aber wenn mich jemand in die richtige Richtung drängen könnte, wäre ich mehr als dankbar.

+3

was haben Sie dieses Problem versuchen getan zu lösen? – depperm

Antwort

0

Ich werde nicht Benchmark dies aber in meiner Erfahrung nativen dicts ist schneller

store = {} 
for k, v in yoursource: 
    try: 
     store[k].add(v) 
    except KeyError: 
     store[k] = {v} 
0
from collections import defaultdict 
mydict = defaultdict(set) 
mydict["key1"] |= {'1484', '1487', '1488'} 

Iteration ist genau wie das normale dict.

+1

Dies funktioniert nicht, da Sie versuchen, einen Satz zu einem Set als Mitglied hinzuzufügen. Aber Sets sind nicht hashbar. Sie möchten wahrscheinlich etwas wie '| =' stattdessen. Oder füge einfach jeweils eines der Zahlenwörter hinzu. –

+0

@Paul: Nur die Schlüssel eines Wörterbuchs müssen hashbar sein. – martineau

+0

@martineau wie die Elemente eines Satzes. Das Problem hängt hier nicht mit dem umschließenden Diktat zusammen, sondern mit der Antwort, die versucht, einen Satz in einen Satz zu stopfen, der zufällig ein Wert in einem Diktat ist. –

Verwandte Themen