循环将最后一行追加到dict,而不是每行1次python

时间:2015-05-08 09:34:06

标签: python list loops dictionary

所以我从主页中获取此信息,我在方法“getPersInfo(ID)”中输入了dictinary。

当我想用以下代码制作词典列表时:

person_dict = {"PERS_ID": 'ini', "PERS_FIRSTNAME": 'ini',"PERS_NAME": 'ini',"PERS_TITLE": 'ini' ,"SITE_ID": 'ini',"PERS_COUNTRY": 'ini'}
listOfPersons = []
for a in range(5,8):
    listOfPersons.append(getPersInfo(a))
    print getPersInfo(a)
print listOfPersons

我得到了这个输出: (5,8只是随机的)

{'PERS_COUNTRY': 'EE', 'SITE_ID': 'null', 'PERS_ID': '5', 'PERS_FIRSTNAME': 'null', 'PERS_TITLE': 'null', 'PERS_NAME': 'null'}
{'PERS_COUNTRY': 'EE', 'SITE_ID': 'null', 'PERS_ID': '6', 'PERS_FIRSTNAME': 'null', 'PERS_TITLE': 'null', 'PERS_NAME': 'null'}
{'PERS_COUNTRY': 'EE', 'SITE_ID': '1101', 'PERS_ID': '7', 'PERS_FIRSTNAME': 'null', 'PERS_TITLE': 'null', 'PERS_NAME': 'null'}

[{'PERS_COUNTRY': 'EE', 'SITE_ID': '1101', 'PERS_ID': '7', 'PERS_FIRSTNAME': 'null', 'PERS_TITLE': 'null', 'PERS_NAME': 'null'}, 
{'PERS_COUNTRY': 'EE', 'SITE_ID': '1101', 'PERS_ID': '7', 'PERS_FIRSTNAME': 'null', 'PERS_TITLE': 'null', 'PERS_NAME': 'null'}, 
{'PERS_COUNTRY': 'EE', 'SITE_ID': '1101', 'PERS_ID': '7', 'PERS_FIRSTNAME': 'null', 'PERS_TITLE': 'null', 'PERS_NAME': 'null'}]

所以...我基本上只是在迭代时间的情况下得到最后一行的金额。 (已针对其他案例进行了测试)

什么可以解释这一点,打印时输出是否正确?

是否附加到我的列表中?

1 个答案:

答案 0 :(得分:1)

它主要是在黑暗中拍摄,因为您的信息非常稀疏,但看起来您只更新了一个dict对象,将其与getPersInfo一起返回,然后将其附加到列表中。所以你有一个包含三个相同对象的列表。您可以使用listOfPersons[0] is listOfPersons[1]进行测试。

无论如何,如果您附加了返回的dict的副本,则不会发生这种情况:

listOfPersons = []
for a in range(5,8):
    listOfPersons.append(dict(getPersInfo(a)))
    print getPersInfo(a)
print listOfPersons