python循环列出相同的字典键

时间:2019-03-04 19:32:26

标签: python python-3.x

我正在尝试从两个不同的带有字典的列表的键和值创建一个新列表。 如果键来自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}}]

0 个答案:

没有答案