2015-05-11 220 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”将会看到密钥是否存在于字典中,那么不需要遍历密钥并且实际上效率较低。 –