2017-01-28 4 views
2

Ich möchte die Liste in defaultdict zusammenführen, die Klasse (Schlüssel) und List-Werte aus zwei verschiedenen Daten/Datei hat. Ich möchte die Liste mit dem eindeutigen Schlüssel zusammenführen, aber die Listenwerte getrennt halten.Wie füge ich die Liste in `defaultdict` mithilfe von Schlüsseln zusammen, aber behalte die Liste in diesem Schlüssel getrennt?

Input:

defaultdict(<class 'list'>, {'1335': ['C', 'T', 'T', 'C', 'T', 'G'], '254': ['T', 'T', 'G', 'C', 'G', 'G']})

defaultdict(<class 'list'>, {'1335': ['A', 'C', 'A', 'A', 'C', 'A'], '254': ['A', 'G', 'A', 'T', 'A', 'A']})

output:

defaultdict(<class 'list'>, {'1335': ['C', 'T', 'T', 'C', 'T', 'G'], ['A', 'C', 'A', 'A', 'C', 'A'] , '254': ['T', 'T', 'G', 'C', 'G', 'G'], ['A', 'G', 'A', 'T', 'A', 'A']})

Danke,

+0

Haben beide der dicts genau die gleichen Schlüssel haben? Wenn nicht, was ist die gewünschte Ausgabe in diesem Fall? – niemmi

+0

Ja, die meisten Schlüssel sind gleich, aber ich denke, es könnte Instanzen in anderen Datendateien geben, in denen einige Schlüssel für die einzelnen Daten eindeutig sind. In diesem Fall würde ich auch gerne zusammenführen, aber es wird nur aus einer Datenliste bestehen. Danke, – everestial007

Antwort

2

Sie möchten, dass der Wert des neuen Wörterbuchs eine Liste von Listen ist.

Sie können eine neue defaultdict von Listen erstellen und die Listenwert von jedem Wörterbuch anhängen:

input_dicts = [dict1, dict2] 

result = defaultdict(list) 

for to_merge in input_dicts: 
    for key, value in to_merge: 
     result[key].append(value) 
+0

Ich werde das überprüfen. Wenn ich viele Wörterbücher habe, denkst du, dass es auch möglich ist, 'merged_dict = defaultdict (dict1, dict2)' '? und dann später die for-Schleife, wie 'für merged_dict:' Danke – everestial007

+0

Nein, doppelte Schlüssel sind nicht erlaubt, so wird es nur den neuesten Wert halten –

+0

So funktioniert Ihre Lösung für 2 verschiedene Standard-Diktat. Was, wenn ich es mit 3 oder mehr "defaultdict" machen möchte. Meine tatsächlichen Daten werden mehrere "defaults" enthalten. – everestial007

Verwandte Themen