2014-11-03 101 views
0

我有点通过这段代码不解:这是更换与字典的字典B键值值

def newval(A, B): 
    for key in A: 
     if key in B: 
      B[key][1] = A[key][0] 
      return B 

这不会在我出于某种原因程序运行在所有。
基本上我希望它通过字典A,循环并在字典B中找到相同的密钥,然后用A替换字典B的键值。

+0

什么是“将无法运行”是什么意思?什么是类型的值在字典中?如果他们比匹配键多?你想替换所有相应的值吗? – 2014-11-03 06:10:58

+0

你的函数在B中第一个'key'为'True'后返回。这是正确的行为? – 2014-11-03 06:30:44

+0

它甚至没有通过函数,这就是我的意思。 @ YS-L – adam 2014-11-03 14:13:14

回答

0

尝试下面的代码,

>>> A = {'foo':2, 'bar':3} 
>>> B = {'foo':5, 'baram':3} 
>>> for key in A: 
    if key in B: 
     B[key]=A[key] 


>>> A 
{'bar': 3, 'foo': 2} 
>>> B 
{'baram': 3, 'foo': 2} 
0

试试这个

def newval(A, B): 
    for key in A: 
     if key in B: 
      B[key] = A[key] 
    return B 
1

您可以通过此代码尝试:

def newval(A, B): 
    print A 
    print B 
    for key in A: 
     print key 
     if key in B: 
      print key 
      B[key]=A[key] 
      print B 
     return B 


A = {'asd':4, 'ad':32} 
B = {'asd':5, 'asd':234} 
b=newval(A,B) 
print b 

输出:

{'asd': 4} 
{'asd': 4} 
0

没有任何工作,所以我怀疑正在读取的文件有问题。这确实是正确的,B字母的关键字中有单引号,A没有,并且根本无法比较它们,因为它们都不匹配。

原始代码工作得很好:

def newval(A, B): 
for key in A: 
    if key in B: 
     B[key][1] = A[key][0] 
     return B