首页 > 解决方案 > 如何将一个列表中的嵌套字典值附加到另一个列表中?

问题描述

假设我有类似的东西:

list1 = [{"l1_key_1": "l1_value_1", "l1_key_2": "l1_value_2", "l1_key_3": "l1_value_3"}, {...}]
list2 = [{"l2_key_1": "l2_value_1", "l2_key_2": "l2_value_2", "l2_key_3": "l2_value_3"}, {...}]

我正在尝试获得类似于以下内容的输出:

list2 = [{"l2_key_1": ["l1_value_1", "l2_value_1"], "l2_key_2": "l2_value_2", "l2_key_3": "l2_value_3"}, {...}]

我已经尝试使用zip()anddefaultdict方法来帮助解决这个问题,但运气不佳。

我基本上想知道如何将第一个元素的第一个和第二个键的值组合到一个列表中,对第二个元素执行相同的操作,等等。

标签: pythonjsonlistdictionary

解决方案


从 复制字典list2。然后从两个字典中获取第一个键和值,将值组合成一个列表,并用它替换第一个字典元素。

使用列表推导对每对字典执行此操作。

def combine_dicts(d1, d2):
    first_value1 = list(d1.values())[0]
    first_key, first_value2 = list(d2.entries())[0]
    new_dict = d2.copy()
    new_dict[first_key] = [first_value1, first_value2]
    return new_dict

result = [combine_dicts(d1, d2) for (d1, d2) in zip(list1, list2)]

这假设两个列表的长度相同。如果不是,则其中一个列表中的额外元素将被丢弃。


推荐阅读