python - 如何将一个列表中的嵌套字典值附加到另一个列表中?
问题描述
假设我有类似的东西:
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
方法来帮助解决这个问题,但运气不佳。
我基本上想知道如何将第一个元素的第一个和第二个键的值组合到一个列表中,对第二个元素执行相同的操作,等等。
解决方案
从 复制字典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)]
这假设两个列表的长度相同。如果不是,则其中一个列表中的额外元素将被丢弃。
推荐阅读
- google-chrome - 带有 chrome 67 的 iFrame 调整大小会导致闪烁
- javascript - 如何创建一个扁平的数组数组,这些数组是数组中对象的一部分,本质上是获取多个对象的子数组?
- dart - Flutter 的崩溃报告
- ssas-tabular - Analysis Services 表格磁盘空间
- c# - SetSocketOption 不适用于 SocketOptionName.ChecksumCoverage C#
- java - Java 谷歌表格 API。将数据附加到特定工作表
- php - 如何从 URL 中删除错误的架构(使用 PHP)
- python - 无法在python的字典中存储非字符文本
- java - 从运行 python 代码并需要 virtualenv 的 IntelliJ 运行 Java 代码
- neo4j - 关系已创建但未存储在嵌入式 Neo4j 中