python - 通过键合并两个 Python 字典的值
问题描述
我想通过它们的键合并两个字典的值。例子:
d1 = {'a':1, 'b':2, 'c':3}
d2 = {'a':2, 'b':[2,3], 'd':3}
所需的输出:
{'a': [1, 2], 'b': [2, 2, 3], 'c': [3], 'd': [3]}
到目前为止我所拥有的是
d12 = {}
for d in (d1, d2):
for k,v in d.items():
d12.setdefault(k, []).append(v)
产生
d12 = {'a': [1, 2], 'b': [2, [2, 3]], 'c': [3], 'd': [3]}
不需要的输出。
我在 SO 上进行了一些搜索,发现这篇文章只要没有抛出就可以回答我的问题TypeError: can only concatenate tuple (not "int") to tuple.
解决方案
问题是您的值有时int
是 s 有时list
是 s。您必须检查数据类型,并append
相应地检查extend
:
for k, v in d.items():
if isinstance(v, list):
d12.setdefault(k, []).extend(v)
else:
d12.setdefault(k, []).append(v)
推荐阅读
- javascript - 在 Django 中使用 Openlayers
- php - RouteGroup Laravel 7中的错误路线
- artificial-intelligence - 从目标进行回归规划时,如何在 GOAP 中加入变量?
- angular - 为什么即使我放了跨域,我也有错误未授权?
- java - 将 .Class 文件注入现有的 Jar 文件
- if-statement - 为什么K不保持它的价值?
- http-method - 如何在 FastAPI 中进行发布/重定向/获取(PRG)?
- django - password_reset 电子邮件模板不呈现 html 标记
- c - 让方法随处可用
- windows - Firebase 登录断言失败:new_time >= loop->time,文件 c:\ws\deps\uv\src\win\core.c,第 309 行