【发布时间】:2016-09-01 18:34:15
【问题描述】:
我正在尝试在 Python 中合并两个 dicts,它们可能是相同的,或者一个可能有更少的信息
例如
master = {"a": 5564, "c": [{"d2":6}]}
daily = { "a": 795, "b": 1337, "c": [{"d1": 2,"d2": 2,"d3": [{"e1": 4,"e2": 4}]}]}
它们需要合并,所以输出就是这样
master = { "a": 6359, "b": 1337, "c": [{"d1": 2,"d2": 8,"d3": [{"e1": 4,"e2": 4}]}]}
虽然我只返回 null,但我试了一下。我可能会遗漏一些东西或刚刚离开。我就是想不通。任何帮助都会很棒谢谢。
def merge(master,daily):
for k, v in daily.items():
if isinstance(daily[k],list):
key_check = keyCheck(k, master)
if key_check:
merge(master[k],daily[k])
else :
master[k] = daily[k]
else :
if keyCheck(k, master):
master[k] += daily[k]
else :
master[k] = daily[k]
keyCheck 只检查一个键是否在字典中,所以它不会抛出错误。
【问题讨论】:
-
你确定
master和daily是字典,这里字典中的每个值都是一个字符串或一个列表,并且每个列表中只有一个条目是字典吗?您确定会遵循这一点,因此不需要进行错误检查吗? -
不是每个值都会是一个列表,但有些是。有什么我对字典不了解的地方吗?它们不能为每个键设置不同类型的值吗?总的来说,我对 python 和字典还很陌生。
-
字典确实可以为每个键具有不同类型的值:您的示例同时使用字符串和列表作为值,正如我在评论中指出的那样。我问是因为如果您确定数据遵循与您的示例相同的模式,您的答案代码会更简单。
标签: python python-2.7 dictionary