2016-11-19 25 views
0

私は下の辞書を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 

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 

最終出力は、単一のキーと値のペアである必要があり、出力は次のようになります。

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

'リスト(セット(DATA1 [ '色'] + DATA2 [ '色'] + ...) ) ' –

+2

あなたは何を試しましたか、それにどのような問題がありますか? – jonrsharpe

+1

私の問題は、異なるスキューズに存在する色を結合して、異なるデータベースに存在する...私はwhileループでdbsを渡しており、単一のキー値ペアのすべての色を結合する必要があります –

答えて

-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() 

私はちょうどそれをコピーしてみてください、このコードはあなたの問題を解決すると思います!

0

あなたはこの方法を試すことができます。

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]) 

結果は次のとおりです。

total_dict = 
{'color': ['red', 'blue', 'green', 'yellow', 'orange', 'black', 'purple', 'pink']} 
関連する問題