Ich habe ein Standardwörterbuch. Ich durchlaufe viele Zeichenfolgen und füge sie dem Verzeichnis unter dem Schlüssel als Zahl hinzu, aber nur dann, wenn dieser Wert noch nicht im Wörterbuch vorhanden ist. So sieht mein Code wie folgt aus:Fügen Sie einen Wert hinzu, wenn dieser Wert im Wörterbuch nicht vorhanden ist
from collections import defaultdict
strings = ["val1", "val2", "val2", "val3"]
my_dict = defaultdict(list)
key = 0
for string in strings:
if string not in my_dict.itervalues():
my_dict[key].append(string)
key += 1
print my_dict
aber es scheint nicht zu funktionieren, weil alle Strings dem Wörterbuch hinzugefügt werden, wie folgt aus:
defaultdict(<type 'list'>, {0: ['val1'], 1: ['val2'], 2: ['val2'], 3: ['val3']})
‚val2‘ sollte nicht hinzugefügt werden und es sollte wie folgt aussieht:
defaultdict(<type 'list'>, {0: ['val1'], 1: ['val2'], 2: ['val3']})
Was mache ich falsch?
Ich schlage vor, herum mit einfachem zu spielen r Beispiele. Versuchen Sie, die Ergebnisse dieser Ausdrücke zu erraten: '1 in [1]' und '1 in [[1]]' und '[1] in [[1]]'. Wenn Sie ein Muster identifizieren können, können Sie dieses Wissen auf Ihr tatsächliches Problem anwenden. – Kevin
Ich bin mir nicht sicher, was Sie am Ende erreichen wollen und warum Sie defaultdict dafür verwenden. Wie wäre es mit 'dedup = set (strings)' zu entfernen dupliziert dann 'dict (zip (range (len (dedup)), deduplizieren))' um die Liste zu einem Wörterbuch zu machen? – raphv
Danke @Kevin, jetzt sehe ich, wie es funktioniert – GohanP