繁体   English   中英

包含包含更多词典的列表的词典-更新

[英]Dict containing a list containing more dicts - Updating

下面我有一个简单的程序。 我打算做的是将两个字典合并。 但我不想复制任何有关偏移,极限,结果的值。 只是标有“ Items”的键及其下的列表,其中包含更多词典。

我的问题是我可以将列表拖到项目下,并将其存储在删除其他键的变量中,但是当我将其添加到其他列表而不是更新时,它将替换值。

例如我有两个字典:

my_dict: {'status': 'ok', 'result': {'items': [{'Test': 1000}, {'Test2': 2000}]}}
my_dict2: {'status': 'ok', 'result': {'items': [{'Test3': 1000}, {'Test4': 2000}]}} 

我期望的结果是:

my_dict2: {'status': 'ok', 'result': {'items': [{'Test3': 1000}, {'Test4': 2000}, {'Test': 1000}, {'Test2': 2000}]}}

但是我得到:

my_dict2: {'status': 'ok', 'result': {'items': [{'Test': 1000}, {'Test2': 2000}]}}

码:

my_dict = {
    "status": "ok",
    "result": {
        "offset": 0,
        "limit": 1000,
        "total": 839,
        "items": [
            {
}
]
}
}

my_dict2 = my_dict

my_dict.update({'result': {'items': [{'Test': 1000},{'Test2': 2000}]}})
my_dict_values = my_dict['result']['items']

my_dict2.update({'result': {'items': [{'Test3': 1000},{'Test4': 2000}]}})
print "Before: %s" % (my_dict2)
my_dict2.update({'result': {'items': my_dict_values}})
print "After: %s" % (my_dict2)

您的示例似乎很正常,因为如果字典中存在给定的键,则字典update()方法将覆盖值。

my_dict2具有键'result' ,其值为{'items': [{'Test3': 1000},{'Test4': 2000}]}

您正在使用my_dict_values覆盖'result'的值,该值是{'items': [{'Test': 1000}, {'Test2': 2000}]}

为了获得预期的结果,您可能想尝试:

my_dict2['result']['items'].extend(my_dict_values)

您正在使用update覆盖“结果”值,可能会更改该行

my_dict2.update({'result': {'items': my_dict_values}})

my_dict2['results']['items'] += my_dict_values

会为你做

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM