2017-08-17 4 views
2
ist

Ich habe diese Struktur meines Wörterbuch in Python: Funktion schreiben, für das Hinzufügen neuer Schlüssel-Wert-PaarWie Hinzufügen neuer Schlüssel-Wert-Paar in Wörterbuch, in dem Wert Arrays Array von

dict={'key1': [['val1','val2'], ['val1','val2'], ['val1','val2']],....} 

ich will. Dies ist die Methode:

def AddNewPair(key, firstArr, secondArr, thirdArr): 
    myDict.update({key:[[firstArr],[secondArr],[thirdArr]]}); 

Das Beispiel des Funktionsaufrufes ist hier:

AddNewPair("key2",["val1","val2"],["val1","val2"],["val1","val2"]); 

Diese Funktion funktioniert, aber nicht richtig. Es fügt neues Schlüsselwertpaar fast wie erwartet hinzu, aber der Wert (Array von Arrays) wird mit einem anderen unnötigen Array umschlossen. Also, das Ergebnis ist das:

dict={'key1': [['val1','val2'], ['val1','val2'], ['val1','val2']],'key2': [[['val1','val2'], ['val1','val2'], ['val1','val2']]] } 

Natürlich möchte ich nicht diese verpackte Array. Bitte, kannst du mir dabei helfen? vielen Dank.

Antwort

5

Da Sie Listen bereits übergeben, sollten Sie sie nicht erneut in eckige Klammern einschließen. Dies ist genug:

myDict.update({key:[firstArr, secondArr, thirdArr]}) 

Ausgang:

{'key1': [['val1', 'val2'], ['val1', 'val2'], ['val1', 'val2']], 
'key2': [['val1', 'val2'], ['val1', 'val2'], ['val1', 'val2']]} 
+0

Vielen Dank, es funktioniert wie erwartet. :))) – user2095405

1

sein kann, mit einem defaultdict wird elegant den Charme tun. Er erstellt einen Wert eines bestimmten Typs und ordnet ihn einem Schlüssel zu, sobald ein Schlüssel angefordert wird, der nicht bereits vorhanden ist . Wenn der Schlüssel vorhanden ist, wird der existierende Wert auf 'get item' zurückgegeben.

Entsprechend können im folgenden Fall die Elementfunktionen .append() und .extend() verwendet werden, da davon ausgegangen werden kann, dass es sich bei dem zurückgegebenen Objekt um eine list handelt.

from collections import defaultdict 

myDict = defaultdict(list) 

def AddNewPair(Key, Pair): 
    myDict[Key].append(Pair) 

def AddNewPairList(Key, PairList): 
    myDict[Key].extend(PairList) 
Verwandte Themen