【发布时间】:2017-11-30 15:40:16
【问题描述】:
我有这个代码。
List1 = [{'pg_id': 100, "group_name": "test1", "product_price": 100}, {'pg_id': 200, "group_name": "test2", "product_price": 200}]
List2 = [{'lowest_price': 20}]
FINAL_DICT = {}
for latest_lowest in List1:
for idx, coupon_related__product in enumerate(List2):
if coupon_related__product['lowest_price'] < latest_lowest['product_price']:
FINAL_DICT[ latest_lowest['pg_id'] ] = coupon_related__product
FINAL_DICT[ latest_lowest['pg_id'] ]['group_name'] = latest_lowest['group_name']
print("Group name is %s"%(latest_lowest['group_name']))
for PG_ID, LOWEST_PRICED_PRODUCT_THIS_PG in FINAL_DICT.iteritems():
print(LOWEST_PRICED_PRODUCT_THIS_PG)
我想要的终端输出是
Group name is test1
Group name is test2
{'lowest_price': 20, 'group_name': 'test2'}
{'lowest_price': 20, 'group_name': 'test1'}
但它输出
Group name is test1
Group name is test2
{'lowest_price': 20, 'group_name': 'test2'}
{'lowest_price': 20, 'group_name': 'test2'}
如果我改变了
FINAL_DICT[ latest_lowest['pg_id'] ] = coupon_related__product
到
FINAL_DICT[ latest_lowest['pg_id'] ] = coupon_related__product.copy()
然后它会产生我想要的正确输出。
我的问题是,为什么FINAL_DICT 中的所有字典都有group_name=test2 而我不使用.copy()
【问题讨论】: