2016-07-07 32 views
-1

Ich habe ein Wörterbuch wie folgt aus:Python entfernen doppelte Werte

{ key1 : "1", key1 : "2", key1 : "3", key1 : "1", key1 : "2" 
    key2 : "1", key2 : "1", key2 : "1", key2 : "1", key2 : "1"} 

I gleiche Werte nur für key1 entfernen möchten:

{ key1 : "1", key1 : "2", key1 : "3", 
    key2 : "1", key2 : "1", key2 : "1", key2 : "1", key2 : "1"} 

Ist es möglich? Ich habe es mit diesem Code versucht:

for i in dict.keys(): 
    if dict.values().count(dict[i]) > 1: 
     del dict[i] 

Aber es funktioniert nicht.

+0

Sie sollten etwas detaillierter angeben, was "nicht funktioniert" bedeutet. :) –

+0

Ich benutze nicht Python so mein Verständnis von Wörterbüchern stammt aus C# und möglicherweise falsch, ich bin mir nicht sicher, ob ein Wörterbuch tatsächlich doppelte Schlüssel haben kann, und wenn ja, Zugriff auf diese durch Schlüssel und Löschen mit dem Schlüssel I Gefühl würde Probleme verursachen? Wenn dies nicht der Fall ist und Python doppelte Schlüssel unterstützt, besteht das Problem möglicherweise darin, dass beim Löschen des Schlüssels alles gelöscht wird, was mit diesem bestimmten Schlüssel übereinstimmt. – JakeJ

+0

Außerdem würde ich empfehlen, dass Sie eine Ergebnismenge angeben, die zeigt, was Sie eigentlich ausgeben möchten, da Ihre Frage mit Ihrem Code in Konflikt steht. – JakeJ

Antwort

-1

Jeder Schlüssel in einem Wörterbuch muss eindeutig sein. Wenn Sie versuchen, einen mit doppelten Schlüsseln zu erstellen, wird nur einer von beiden gespeichert. Zum Beispiel:

key1, key2 = 1, 2 

d = { key1 : "1", key1 : "2", key1 : "3", key1 : "1", key1 : "2", 
     key2 : "1", key2 : "1", key2 : "1", key2 : "1", key2 : "1"} 

print(d) 
# {1: '2', 2: '1'} 

Das ist das erste Problem, das Sie erarbeiten müssen. Sie können jedoch jeden Wert für einen übereinstimmenden Schlüssel in einem Array speichern:

key1, key2 = 1, 2 

d = {key1 : ["1", "2", "3", "1", "2"], 
    key2 : ["1", "1", "1", "1", "1"]} 

print(sorted(list(set(d[key1])))) 
# ['1', '2', '3'] 
+0

Es tut mir leid, aber ich werde diese Antwort ablehnen, weil es zu früh ist. Bis das OP die Frage geklärt hat, gibt es keine Möglichkeit zu wissen, was die richtige Antwort ist. Wie Sie und andere Kommentatoren darauf hingewiesen haben, gibt es keinen wirklichen Code, da die Konstruktion des Wörterbuchs ungültig ist. –

Verwandte Themen