Чтобы понять, что именно произошло, вам нужно знать о ссылках.
>>> a = []
>>> test['a'] = a
>>> a.append(1)
>>> a.append(2)
>>> test['a']
[1, 2]
Когда вы выполнили строку self.accountInfo[accountID] = personalInfo
То, что на самом деле произошло, - передать ссылку personalInfo
на self.accountInfo[accountID]
Значение модификации personalInfo
также будет отражено в self.accountInfo[accountID]
self.accountInfo[accountID] = personalInfo >> {'a92ab2fcea': []}
personalInfo.append(firstName) >> {'a92ab2fcea': ['firstName']} # Note: Since personalInfo changed, so self.accountInfo[accountID] also changed.
personalInfo.append(lastName) >> {'a92ab2fcea': ['firstName','lastName']}
personalInfo.append(email) >> {'a92ab2fcea': ['firstName','lastName','email']}
personalInfo.append(password) >> {'a92ab2fcea': ['firstName','lastName','email','password']}
personalInfo.append(birthdate) >> {'a92ab2fcea': ['firstName','lastName','email','password','birthdate']}
personalInfo.append(alias) >> {'a92ab2fcea': ['firstName','lastName','email','password','birthdate','alias']}
self.accountInfo[accountID].append(personalInfo) >> {'a92ab2fcea': ['firstName', 'lastName', 'email', 'password', 'birthdate', 'alias', [...]]} # What you are doing is appending personalInfo to personalInfo
Я думаю, что вы хотели сделать следующее:
- удалить
self.accountInfo[accountID] = personalInfo
- заменить
self.accountInfo[accountID].append(personalInfo) with self.accountInfo[accountID] = personalInfo
Но если вы понимаете эталонную концепцию,
- оставьте
self.accountInfo[accountID] = personalInfo
- удалить
self.accountInfo[accountID].append(personalInfo)
Следует такжеработа!
Но последний способ не рекомендуется, так как он менее читабелен.