2014-07-08 85 views
0

如何在這個簡單示例中將兩個表索引字典中的項添加到一起?將兩個字典中的值添加到同一個鍵上

table1 = {'item1': {'quantity': 3, 'value': 3.0}, \ 
      'item2': {'quantity': 10, 'value': 30} \ 
      } 

table2 = {'item1': {'quantity': 5, 'value': 5.0}, \ 
      'item3': {'quantity': 7, 'value': 10.5} \ 
      } 

newDic = {'item1': {'quantity': 8, 'value': 8.0}, \ 
      'item2': {'quantity': 10, 'value': 30}, \ 
      'item3': {'quantity': 7, 'value': 10.5} \ 
      } 

我有一個函數可以將平面文件的內容解析並過濾到字典中。我想重新設計腳本來解析多個文件。每個表具有完全相同的列標題。行具有不同值的相同項目,但某些文件具有附加項目。

回答

1

您可以添加到table2table1

table1 = {'item1': {'quantity': 3, 'value': 3.0}, \ 
      'item2': {'quantity': 10, 'value': 30} \ 
      } 

table2 = {'item1': {'quantity': 5, 'value': 5.0}, \ 
      'item3': {'quantity': 7, 'value': 10.5} \ 
      } 

for key, val in table2.items(): 
    if key not in table1: 
     table1[key] = val 
    else: 
     for k, v in val.items(): 
      if k not in table1[key]: 
       table1[key][k] = v 
      else: 
       table1[key][k] += v 

print table1 

{ 
    'item2': {'value': 30, 'quantity': 10}, 
    'item3': {'value': 10.5, 'quantity': 7}, 
    'item1': {'value': 8.0, 'quantity': 8} 
} 
+0

超快速。將t2加到t1。聽起來不錯。我也可以添加到一個新的表格t1和t2。以哪種方式 - 讓我循環。謝謝! – xtian

+0

深度如何變化? –

+0

@sjcipher你將不得不改變代碼。 – furas

相關問題