python中变量的内存管理
我有一个关于python内存管理的问题 我有以下代码:python中变量的内存管理,python,dictionary,memory-management,Python,Dictionary,Memory Management,我有一个关于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':
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对两个dict使用相同的内存位置,如何克服这个问题 输出:
{
'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'
}
}
实际上,它们有不同的价值观。这是我从您的代码中获得的输出:
>>> print days_of_week
{'9': {u'1': u'sunday,monday,wednesday,monday,tuesday', u'3': u'wednesday,saturday,thursday,saturday', u'2': u'monday,tuesday,wednesday,tuesday,wednesday', u'5': u'monday,wednesday,monday,tuesday,wednesday'}, '16': {u'1': u'sunday,monday,wednesday,monday,tuesday', u'3': u'wednesday,saturday,thursday,saturday', u'2': u'monday,tuesday,wednesday,tuesday,wednesday', u'5': u'monday,wednesday,monday,tuesday,wednesday'}}
>>> print 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_ID中,我创建了两个具有9和16个键的DICT,并使用temp变量访问这些DICT,以向这些DICT添加任何数据,因为单个迭代值将同时添加到这两个DICTdicts@Rogalski是的,就这样,;好发现