[問題] dict 在迴圈裡 update的問題

作者: ek0519 (new life)   2016-08-05 17:08:41
原始碼
subclass_data = {}
transaction_info_subclass = {}
cart_subclass_temp = {}
cart_items = {
147: [
{'object_id': 8022, 'categorysub': 147, },
{'object_id': 8021, 'categorysub': 147, }
],
148: [ {'object_id': 8023, 'categorysub': 148, } ]
}
cart_subclass =[147, 148]
for subclass in cart_subclass:
cart_subclass_temp['items'] = cart_items[subclass]
transaction_info_subclass = cart_subclass_temp
print (transaction_info_subclass) # 1
subclass_data[subclass] = transaction_info_subclass # 新增字典
print (subclass_data) # 2
輸出為
第一個迴圈的 1
{'items': [{'categorysub': 147, 'object_id': 8022},
{'categorysub': 147, 'object_id': 8021}]}
第一個迴圈的 2
{147: {'items': [{'categorysub': 147, 'object_id': 8022},
{'categorysub': 147, 'object_id': 8021}]}}
第二個迴圈的 1
{'items': [{'categorysub': 148, 'object_id': 8023}]}
第二個迴圈的 2
{147: {'items': [{'categorysub': 148, 'object_id': 8023}]},
148: {'items': [{'categorysub': 148, 'object_id': 8023}]}}
不知道為何 第二迴圈 # 新增字典的時候 會把裡面原有的 key 147 對應的 'items'
一起改成 key 148 對應的 'items'(value)
之前也用過dict update的方式也是一樣,還請教一下有人有其他解法沒有
作者: alibuda174 (阿哩不達)   2016-08-05 17:23:00
把cart_subclass_temp = {} 移入迴圈內
作者: Yshuan (倚絃)   2016-08-05 19:19:00
1F正確 Dict一直是同一個 所以你的2內items都是那個Dict
作者: ek0519 (new life)   2016-08-06 21:27:00
太感謝了 T_T 寫購物車看到眼花

Links booklink

Contact Us: admin [ a t ] ucptt.com