我正在尝试从两个不同的带有字典的列表的键和值创建一个新列表。 如果键来自a ==键来自b,则a ['med'] = b ['med'] ... 它仅适用于最后一场比赛,而不是所有比赛:( 感谢您的帮助。
list_a = [{'a': 1, 'b': 2, 'c': 8}, {'a': 4, 'b': 6, 'c': 7}]
list_b =[{'f': 6, 'med': {}}, {'f': 1, 'med': {'g': 1, 'o': 60}}]
def get_event_and_med(list_a, list_b):
list_updated = []
for x in list_a:
a_i = x.get('a')
for i in list_b:
b_i = i.get('f')
if a_i == b_i:
x['med'] = i.get('med')
else:
x['med'] = dict()
list_updated.append(x)
return list_updated
list_updated = get_event_and_med(list_a, list_b)
desired_output = [{'a': 1, 'b': 2, 'c': 8, 'med': {'g': 1, 'o': 60}}, {'a': 4, 'b': 6, 'c': 7, 'med': {}}]
已编辑:
来自评论:
a)根据建议修改代码
b)调用了get_event_and_med()
c)提供了所需的输出
d)我不想要一本大字典,这就是为什么我只想要一个键的原因
e)我每次都想比赛。
f)如果我给出更大的列表,它不会全部匹配,而只会匹配最后一个:
list_a = [{'a': 1, 'b': 2, 'c': 8}, {'a': 4, 'b': 6, 'c': 7}, {'a': 3, 'b':4, 'c': 9}]
list_b = [{'f': 6, 'med': {}}, {'f': 1, 'med': {'g': 1, 'o': 60}}, {'f': 3, 'med': {'g': 3, 'o': 85}}]
desired_output = [{'a': 1, 'b': 2, 'c': 8, 'med': {'g': 1, 'o': 60}}, {'a': 4, 'b': 6, 'c': 7, 'med': {}}, {'a': 3, 'b': 4, 'c': 9, 'med': {'g': 3, 'o': 85}}]