鱼C论坛

 找回密码
 立即注册
查看: 1596|回复: 3

[已解决]字典组合

[复制链接]
发表于 2023-7-21 22:37:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问怎样把第一个列表和第二个列表的内容组合成第三个列表的样子
list_1 = [{'姓名':'小米','年龄':'10'},{'姓名':'小明','年龄':'20'}]
list_2 = [{'年级':'五年级'},{'年级':'六年级'}]
list_3 = [{'姓名':'小米','年龄':'10','年级':'五年级'},{'姓名':'小明','年龄':'20','年级':'六年级'}]
最佳答案
2023-7-21 22:38:13
您可以使用Python的内建函数 zip 来组合这两个列表,并且使用字典的 update 方法来将第二个列表中的字典添加到第一个列表的字典中。请看以下的代码:
list_1 = [{'姓名':'小米','年龄':'10'},{'姓名':'小明','年龄':'20'}]
list_2 = [{'年级':'五年级'},{'年级':'六年级'}]

list_3 = [dict_1.update(dict_2) or dict_1 for dict_1, dict_2 in zip(list_1, list_2)]
print(list_3)

zip 函数将 list_1 和 list_2 组合成一个元组的列表。在这个列表中,每一个元组都包含一个来自 list_1 和一个来自 list_2 的字典。然后,我们遍历这个元组列表,对于每个元组,我们都使用 update 方法将第二个字典中的键值对添加到第一个字典中。这样,我们就得到了一个新的字典,这个字典包含了两个源字典中的所有键值对。最后,我们将这个新的字典添加到 list_3 中。

注意, update 函数在更新字典后会返回 None ,为了返回更新后的字典,我们使用了逻辑或操作 or ,如果 update 方法返回 None ,那么 or 操作就会返回 dict_1 ,这就是我们期望的结果。

执行上述代码,您将得到如下输出:
[{'姓名': '小米', '年龄': '10', '年级': '五年级'}, {'姓名': '小明', '年龄': '20', '年级': '六年级'}]

这正是您期望的 list_3 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-21 22:37:53 | 显示全部楼层
问题分析:
您希望将list_1list_2中的字典内容进行组合,形成一个新的列表list_3,其中包含了两个字典中的所有键值对。

解决方案:
以下是一种解决方案,可以使用列表推导式和字典的update()方法来实现:
list_1 = [{'姓名':'小米','年龄':'10'},{'姓名':'小明','年龄':'20'}]list_2 = [{'年级':'五年级'},{'年级':'六年级'}]list_3 = [{[b]d1, [/b]d2} for d1, d2 in zip(list_1, list_2)]
这里使用了列表推导式来遍历list_1list_2并进行组合操作。zip()函数用于将两个列表中的对应元素打包成元组,然后使用[b]{d1, d2}[/b]来合并两个字典的键值对,从而得到新的字典。

最后的结果list_3[{'姓名': '小米', '年龄': '10', '年级': '五年级'}, {'姓名': '小明', '年龄': '20', '年级': '六年级'}]

希望以上解决方案符合您的需求。如果有任何问题,请随时提出。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-21 22:38:13 | 显示全部楼层    本楼为最佳答案   
您可以使用Python的内建函数 zip 来组合这两个列表,并且使用字典的 update 方法来将第二个列表中的字典添加到第一个列表的字典中。请看以下的代码:
list_1 = [{'姓名':'小米','年龄':'10'},{'姓名':'小明','年龄':'20'}]
list_2 = [{'年级':'五年级'},{'年级':'六年级'}]

list_3 = [dict_1.update(dict_2) or dict_1 for dict_1, dict_2 in zip(list_1, list_2)]
print(list_3)

zip 函数将 list_1 和 list_2 组合成一个元组的列表。在这个列表中,每一个元组都包含一个来自 list_1 和一个来自 list_2 的字典。然后,我们遍历这个元组列表,对于每个元组,我们都使用 update 方法将第二个字典中的键值对添加到第一个字典中。这样,我们就得到了一个新的字典,这个字典包含了两个源字典中的所有键值对。最后,我们将这个新的字典添加到 list_3 中。

注意, update 函数在更新字典后会返回 None ,为了返回更新后的字典,我们使用了逻辑或操作 or ,如果 update 方法返回 None ,那么 or 操作就会返回 dict_1 ,这就是我们期望的结果。

执行上述代码,您将得到如下输出:
[{'姓名': '小米', '年龄': '10', '年级': '五年级'}, {'姓名': '小明', '年龄': '20', '年级': '六年级'}]

这正是您期望的 list_3 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-21 22:41:26 | 显示全部楼层
isdkz 发表于 2023-7-21 22:38
您可以使用Python的内建函数 zip 来组合这两个列表,并且使用字典的 update 方法来将第二个列表中的字典添 ...

好的,感谢感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 10:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表