【发布时间】:2021-02-16 00:37:48
【问题描述】:
我试图通过在公共键值对上组合两个字典来创建嵌套字典
词典如下:
dict1 = {'employee': {1: {'empId': 1, 'salary': 1000}, 2: {'empId': 2, 'salary': 2000}}}
dict2 = {'time': {1: {'empId': 1, 'avgtime': 55}, 2: {'empId': 1, 'avgtime': 25}, 3: {'empId': 2, 'avgtime': 25}}}
我想将两者结合起来创建一个字典,时间是一个嵌套在员工内部的字典,如下所示.....
dict3 = {'employee': {1: {'empId': 1, 'salary': 1000, 'avgtime': {1: 55, 2: 25}}}, 2: {'empId': 2, 'salary': 2000, 'avgtime': {1: 25}}}
我已经尝试了几件事,可以让整个 dict2 附加到 dict1 的末尾,但无法弄清楚每次有键/值匹配时如何添加嵌套 dict
def merge(d1, d2):
for thing1, thing2 in list(zip(d1['employee'].values(), d2['time'].values())):
d1['time'] = {}
for k in thing1.items():
if k in thing2.items():
d1['time'].update(thing2)
return d1
a = merge(dict1,dict2)
print(a)
上面的输出给出了以下结果,但它是我得到的最接近的结果
{'employee': {1: {'empId': 1, 'salary': 1000}, 2: {'empId': 2, 'salary': 2000}}, 'time': {'empId': 1, 'avgtime': 55}}
所以我的问题是如何将这两个字典组合成一个公共键值对,如 dict3 所示
【问题讨论】:
-
请提供预期的MRE - Minimal, Reproducible Example。显示中间结果与预期结果的偏差。我们应该能够将您的代码块粘贴到文件中,运行它并重现您的问题。这也让我们可以在您的上下文中测试任何建议。
-
您想要的输出不清楚。首先,您的数据输入远非最少,因此关键问题会在额外的字段中丢失。其次,当输入中没有相应的数据时,您想要的输出会神奇地生成“第 2 天”字典——合并的方法还不清楚。
-
好吧,又破解了,希望现在更清楚
-
我会等你完成 MRE。
-
好的,我已经尝试过让它更清晰,我希望它现在更好,如果不能,请您更具体地说明您希望看到更多/更少的内容吗?我只是想学习,希望能得到帮助
标签: python json dictionary nested