我正在研究我的问题的答案,但我还没有找到解决方案。
我有两个清单。列表的元素是字典。我希望仅当字典与另一个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}]
答案 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)