2016-11-19 7 views
0

Ich möchte die folgenden Wörterbücher zu einem zusammenführen.Hinzufügen neuer Werte zu demselben Wörterbuchschlüssel

data1 = { 
    'color': ['red', 'blue', 'green'] 
} # from 1st sku 
data2 = { 
    'color':[ 'red', 'yellow', 'orange', 'black'] 
} # from 2nd sku 
data3 = { 
    'color': ['black', 'purple', 'yellow', 'pink'] 
} # from 3rd sku 

i = 0  
dict={} # i want to create new dict with combination of all the available dict data in single dict with single key i.e(same key) with integrated values in a single list 
while i<10: 
    dict['color'] = #how to process further 

endgültige Ausgabe einzelnes Schlüsselwertpaar sein sollte, ausgegeben werden soll:

>>> print dict  
{'color': ['red','blue','green','yellow','orange','black','purple','pink']} 
+3

'Liste (set (data1 [ 'Farbe'] + Daten2 [ 'Farbe'] + ...)) ' –

+2

Also was hast du versucht, und was genau ist das Problem damit? – jonrsharpe

+1

mein Problem ist, die Farbe zu vereinigen, die in verschiedenen skus vorhanden sind und sie in verschiedenen Datenbanken anwesend sind ... ich übergebe DBS in der while-Schleife und benötige Union alle Farbe im einzelnen Schlüsselwertpaar –

Antwort

-1
data1 = { 'color':['red','blue','green'] } #from 1st sku 
data2 = { 'color':['red','yellow','orange','black'] } #from 2nd sku 
data3 = { 'color':['black','purple','yellow','pink'] } #from 3rd sku 

datas = [data1, data2, data3] 
results = {} 
for data in datas: 
    for key, val in data.items(): 
     def_val = results.get(key, []) # if key not exists, return [] 
     def_val = set(def_val) | set(val) # merge two sets, and return unique items 
     results[key] = list(def_val) 

def main(): 
    print(results) 
    # output: {'color': ['pink', 'blue', 'orange', 'green', 'black', 'yellow', 'purple', 'red']} 

if __name__ == "__main__": 
    main() 

Ich denke, dieser Code löst Ihr Problem, kopieren Sie es einfach und versuchen!

0

Sie können auf diese Weise versuchen:

dicts = [data1, data2, data3] 

total_dict = {} 
for dict in dicts: 
    key = dict.keys()[0] 
    total_dict.setdefault(key, []).extend(v for v in dict[key] if v not in total_dict[key]) 

Das Ergebnis ist:

total_dict = 
{'color': ['red', 'blue', 'green', 'yellow', 'orange', 'black', 'purple', 'pink']} 
Verwandte Themen