2017-04-12 88 views
0

下面我有一個簡單的程序。我打算做的是合併這兩本字典。但我不想複製任何關於偏移量,限制,結果的值。只是標有「項目」的標籤和包含更多字典的列表。字典包含一個列表包含更多的字典 - 更新

我的問題是,我可以拉下列表項,並將其存儲在一個變量中,其中刪除了其他鍵,但是當我將它添加到另一個列表中時,它將替換值而不是更新。

比如我有兩點字典:

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) 
+1

要更新'my_dict2',當你真的只是想更新'my_dict2 [ '項目']'。 – Paul

+0

@Patrick Haugh感謝您編輯我的帖子。我忘了添加頂部的代碼片段;-) –

+0

@Paul是的,這似乎正是我在做什麼,接受的答案給了我正確的功能使用。謝謝哥們。 :-) –

回答

1

您的示例看起來很正常,因爲如果字典中存在給定的鍵,字典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) 
+0

啊謝謝!我知道這只是簡單的我做錯了。我只是誤解了更新功能。 –

0

您可以利用更新重寫「結果」值,也許轉產

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

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

會爲你做它

相關問題