[问题] 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