2012-12-10 146 views
0

改变列表的字典中的值,我HAE这样我怎样才能在Python

dict1 = [('var1','aa'),('var2','bb')('var3','cc')]

我还有一个字典词典

dict2 = [('var2','22'),('var3','33'),('var5','23'),('var6','33'),('var7','23')]

什么我想要做的是,我把dict2的内容替换为dict1中的varibels

我的意思是让最终dict3 = dict2 = [('var2','bb'),('var3','cc'),('var5','23'),('var6','33'),('var7','23')]

+9

这些都不是词典维持秩序,他们是元组的列表,将它们转换为字典与词典(),遍历键和更换。 – monkut

+0

@monkut你为什么没有发布这个答案?你打败了我(当我写代码的时候)。 –

回答

5
>>> list1 = [('var1','aa'),('var2','bb'),('var3','cc')] 
>>> list2 = [('var2','22'),('var3','33'),('var5','23'),('var6','33'),('var7','23')] 
>>> dict1 = dict(list1) 
>>> list2 = [(k, dict1.get(k, v)) for k, v in list2] 
>>> list2 
[('var2', 'bb'), ('var3', 'cc'), ('var5', '23'), ('var6', '33'), ('var7', '23')] 

这将从原来list2

+0

+1我不认为这是OP真正想要的,但光滑。 –

+0

感谢哥们,那正是我想要的 – user825904

+0

@ user33好证明我错了哈哈。但是,如果您要“替换”与变量相关的值,则应该使用字典。元组是永恒不变的,字典的意思是(看起来)正是你在做什么。 –

3

那些不是dictionaries。这里是如何做到这一点,如果他们是:

>>> dict1 = {'var1':'aa', 'var2':'bb' ,'var3':'cc'} 
>>> dict2 = {'var2':'22', 'var3':'33', 'var5':'23', 'var6':'33', 'var7':'23'} 
>>> for key in dict2: 
...  if key in dict1: 
...    dict2[key] = dict1[key] 
... 
>>> dict2 
{'var5': '23', 'var7': '23', 'var6': '33', 'var3': 'cc', 'var2': 'bb'} 

你可能想用dict1dict2实际上是字典在我的例子开始,但是请注意,您可以使用如容易将它们转换。 dict1 = dict(dict1)

+0

我可以转换回tuple后关闭内容 – user825904

+0

是的,只需使用[[(k,v)for k,v in dict2.items()]' – sberry

+0

是的,但是如果您想要该元组形式的最终结果,只需使用sberry的答案。 –