2017-07-11 164 views
1

我试图比较2个字典列表来替换相等的值。例如:比较python中的两个字典列表中的不同键

d1 = [{'a': 'hello', 'b':'world','c':'this','d':'is'},{'a':'ddd' ,'b': 'www','c':'hah','d':'tt'},.....] 
d2 = [{'Q': 'hello', 'H':'target_word','K':'that','N':'was'},{'Q':'world' ,'H': 'target_word','K':'hah','N':'txt'},.....] 

谁能告诉我我怎么能与“Q” D1比较键(“A”,“B”)在D2中,如果它们具有相同的值,那么就必须更换“a和“b在D1值”轰在D2值是‘target_word’

这一个我尝试:

for i in d1: 
    for j in d2: 
    for k in i.keys(): 
     for k1 in j.keys(): 
      if j[k1] == i[k]: 
       i[k] = j ['H'] 
       list.append(i[k]) 
+0

你应该你的输出是什么?你可以得到共同的密钥,并只对它们进行比较。 – user1767754

回答

2

这个怎么样?

d1 = [{'a': 'hello', 'b':'world','c':'this','d':'is'},{'a':'ddd' ,'b': 'www','c':'hah','d':'tt'}] 
d2 = [{'Q': 'hello', 'H':'target_word','K':'that','N':'was'},{'Q':'world' ,'H': 'target_word','K':'hah','N':'txt'}] 

for input in d1: 
    for queries in d2: 
     for val in ("a", "b"): 
      if input[val] == queries["Q"]: 
       input[val] = queries["H"] 

输出:

>>> d1 
[{'a': 'target_word', 'c': 'this', 'b': 'target_word', 'd': 'is'}, {'a': 'ddd', 'c': 'hah', 'b': 'www', 'd': 'tt'}]