为什么这个dicts列表中的dicts是空的?

时间:2016-10-08 23:11:27

标签: python python-2.7

正如标题所暗示的那样;我不确定为什么这个词典列表中的词典是空的。我在将它们附加到列表之前打印出字典,它们都有4个键/值。

请忽略代码的“烦恼” - 我总是经历一个基本写出来然后完善的过程!

代码:

totalFirst <- 0

prompt <- "What were your second year module results?(space separated)"
secondYearMark <- as.integer(strsplit(readline(prompt), " ")[[1]])
if (secondYearMark >= 70) totalFirst <- totalFirst + 1

1 个答案:

答案 0 :(得分:2)

我认为你的意思是:

 print len(self.data_dict)
 self.master_list.append(self.data_dict)
 print self.data_dict
 self.data_dict.clear()

dict为空,因为你清除它。一切都是Python的参考。

>>> d = {k:v for k,v in zip(range(5),'abcde')}
>>> id(d)
140199719344392
>>> some_list = []
>>> some_list.append(d)
>>> some_list
[{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'}]
>>> id(some_list[0])
140199719344392
>>> d.clear()
>>> some_list
[{}]
>>> 

如果要附加副本,则需要明确地复制它。如果浅拷贝可以,那么只需使用your_dict.copy()

>>> d = {k:v for k,v in zip(range(5),'abcde')}
>>> d
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'}
>>> id(d)
140199686153480
>>> some_list = []
>>> some_list.append(d.copy())
>>> id(some_list[0])
140199719344392
>>> d.clear()
>>> some_list
[{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'}]
>>>