-1
我有一個關於python內存管理的問題。Python中變量的內存管理
我有以下代碼:
data1 = [
{u'name': u'9_1', u'value': u'sunday'},
{u'name': u'9_1', u'value': u'monday'},
{u'name': u'9_1', u'value': u'wednesday'},
{u'name': u'16_1', u'value': u'monday'},
{u'name': u'16_1', u'value': u'tuesday'},
{u'name': u'9_2', u'value': u'monday'},
{u'name': u'9_2', u'value': u'tuesday'},
{u'name': u'9_2', u'value': u'wednesday'},
{u'name': u'16_2', u'value': u'tuesday'},
{u'name': u'16_2', u'value': u'wednesday'},
{u'name': u'9_3', u'value': u'wednesday'},
{u'name': u'9_3', u'value': u'saturday'},
{u'name': u'16_3', u'value': u'thursday'},
{u'name': u'16_3', u'value': u'saturday'},
{u'name': u'9_5', u'value': u'monday'},
{u'name': u'9_5', u'value': u'wednesday'},
{u'name': u'16_5', u'value': u'monday'},
{u'name': u'16_5', u'value': u'tuesday'},
{u'name': u'16_5', u'value': u'wednesday'},
{u'name': u'17_5', u'value': u''},
{u'name': u'18_5', u'value': u''}
]
multi_select_ids = ['9', '16']
days_of_week = dict.fromkeys(multi_select_ids,{})
print "before loop:", days_of_week
for data in data1:
if data['value']:
name = data['name'].split("_")
if len(name) > 1:
ele_id = name[0]
row_id = name[1]
if ele_id in multi_select_ids:
temp = days_of_week[ele_id]
try:
temp[row_id] = temp[row_id] + ',' + data['value']
except:
temp[row_id] = data['value']
print days_of_week
這裏Python是使用相同的內存位置兩種類型的字典,
如何克服這個問題?
輸出:
{
'16': {
u'1': u'sunday,monday,wednesday,monday,tuesday',
u'2': u'monday,tuesday,wednesday,tuesday,wednesday',
u'3': u'wednesday,saturday,thursday,saturday',
u'5': u'monday,wednesday,monday,tuesday,wednesday'
},
'9': {
u'1': u'sunday,monday,wednesday,monday,tuesday',
u'2': u'monday,tuesday,wednesday,tuesday,wednesday',
u'3': u'wednesday,saturday,thursday,saturday',
u'5': u'monday,wednesday,monday,tuesday,wednesday'
}
}
所需的輸出:
{
'16': {
u'1': u'monday,tuesday',
u'2': u'tuesday,wednesday',
u'3': u'thursday,saturday',
u'5': u'monday,tuesday,wednesday'
},
'9': {
u'1': u'sunday,monday,wednesday',
u'2': u'monday,tuesday,wednesday',
u'3': u'wednesday,saturday',
u'5': u'monday,wednesday'
}
}
哪兩個字典,你怎麼知道? – DeepSpace
對實際的和想要的輸出有用 – abimelex
順便提一下,你的問題與*「內存管理」*無關;您明顯將引用分配給原來的某處,而您應該將引用分配給*副本*。 – jonrsharpe