下面我有一个简单的程序。我打算做的是合并两个词典。但我不想复制有关偏移,限制和结果的任何值。只是标有“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)
答案 0 :(得分:1)
您的示例似乎正常,因为如果字典中存在给定键,则dictionary update()方法会覆盖值。
my_dict2
的密钥'result'
的值为{'items': [{'Test3': 1000},{'Test4': 2000}]}
。
您使用'result'
覆盖my_dict_values
的值{'items': [{'Test': 1000}, {'Test2': 2000}]}
要获得预期的结果,您可能想尝试:
my_dict2['result']['items'].extend(my_dict_values)
答案 1 :(得分:0)
你正在压倒'结果'使用更新的值,也许更改行
my_dict2.update({'result': {'items': my_dict_values}})
到
my_dict2['results']['items'] += my_dict_values
会为你做这件事