2015-05-11 290 views
1

我想通過使用Python的字典元組來迭代,獲取我正在查找的值,然後使用該值修改另一個字典。例如:通過在Python中的字典元組迭代迭代

Dict = {'1': 'one', '2': 'three'} 

Tuple = ({'1': 'one', '5': 'five'}, {'4': 'four', '2': 'two'}) 

我的目標是修改Dict和我在我的元組第二字典取代'three''two'

我知道如何通過使用循環和dict.items()字典迭代,但我似乎無法元組這樣做......

任何幫助將非常感激!

+0

你能告訴你的期望的輸出? 'Dict'是否具有來自'Tuple'字典的所有鍵/值對? – CoryKramer

+0

我的字典不一定包含所有的元組字符中的鍵/值,但Tuple字典肯定會有字典中的所有鍵/值。希望有意義 – Froodo

+0

如果'Tuple'包含兩個字典例如:'Tuple =({'1':'one','5':'five'},{'4':'four','2':與'Dict'中的鍵匹配。 'two'},{'2':'six'})'? –

回答

1

只需檢查每個字典d的密鑰,然後設置Dict["2"]等於d["2"]

Dict = {'1': 'one', '2': 'three'} 

Tuple = ({'1': 'one', '5': 'five'}, {'4': 'four', '2': 'two'}) 

for d in Tuple: 
    if "2" in d: 
     Dict["2"] = d["2"] 

如果Tuple中有多個具有相同鍵的字典,則該值將設置爲您遇到的最後一個字典。如果你想要第一場比賽,你應該在break

Dict = {'1': 'one', '2': 'three'} 

Tuple = ({'1': 'one', '5': 'five'}, {'4': 'four', '2': 'two'}) 
for d in Tuple: 
    if "2" in d: 
     Dict["2"] = d["2"] 
     break # get first match 

如果你想這將是更好的最後一場比賽開始在元組的末尾:

for d in reversed(Tuple): 
    if "2" in d: 
     Dict["2"] = d["2"] 
     break # last dict in Tuple that has the key 
+0

我不需要兩個for循環D? – Froodo

+0

似乎不太可能,OP字面上只是想用鑰匙'2'替換物品,你能澄清這是否是@Froodo的目標嗎? –

+0

@Froodo,不,如果d'中的「2」將會看到密鑰是否存在於字典中,那麼不需要遍歷密鑰並且實際上效率較低。 –