蟒蛇。从列表中的字典中获取{key:value}并将其设置为列表中的另一个字典

时间:2017-05-21 08:26:46

标签: python dictionary

我正在研究我的问题的答案,但我还没有找到解决方案。 我有两个清单。列表的元素是字典。我希望仅当字典与另一个key:value相等时才从第一个列表中获取key:value。 例如:

list_1 = [{'A':1, 'B':2, 'C':3}, {'A':10, 'B':20, 'C':30}]
list_2 = [{'A':1, 'B':22,}, {'A':111, 'B':20}]

# I need get key and value of 'C' from list_1 IF value of 'A' in both dict are equal

# code block for my task...

# result
list_2 = [{'A':1, 'B':22, 'C':3}, {'A':111, 'B':20}]

# 'C':3 append in list_2[0], because 'A' has same value

UPD: 即使具有相同“A”值的dict具有不同的索引,它也应该起作用:

list_1 = [{'A':1, 'B':2, 'C':3}, {'A':10, 'B':20, 'C':30}]
list_2 = [{'A':111, 'B':20}, {'A':1, 'B':22,}]

# code...

# result
list_2 = [{'A':111, 'B':20}, {'A':1, 'B':22, 'C':3}]

3 个答案:

答案 0 :(得分:0)

以下是一行内容,假设密钥A包含IIS APPPOOL\<application_pool_name>list_1中的所有字母,而list_2的所有字母中都包含C:

list_1

答案 1 :(得分:0)

如果我做得对,这就是你想要的

list_1 = [{'A':1, 'B':2, 'C':3}, {'A':10, 'B':20, 'C':30}]
list_2 = [{'A':1, 'B':22,}, {'A':111, 'B':20}]

for dic in range(len(list_1)):
  if list_1[dic]['A']==list_2[dic]['A']:
    list_2[dic]['C']=list_1[dic]['C']
print(list_2)

出: [{'A': 1, 'B': 22, 'C': 3}, {'A': 111, 'B': 20}]

更新:我作为一个功能实现并添加了你想要的功能,检查它是否正常..

def add_to_other_list(list_1,list_2):
  for dic_1 in list_1:
    for dic_2 in list_2:
      if dic_1['A']==dic_2['A']:
        dic_2['C']=dic_1['C']
  return list_2

list_2 = add_to_other_list(list_1,list_2)

答案 2 :(得分:0)

def copymatch (matchkey, copykey, source, target):
    if source.get(matchkey) == target.get(matchkey):
        target[copykey] = source.get(copykey)

for source, target in zip(list_1,list_2):
    copymatch('A','C',source,target)