Python:[…]位于列表末尾
我遇到了一个问题,在我将列表添加到字典后,列表末尾出现了一个不需要的Python:[…]位于列表末尾,python,list,dictionary,Python,List,Dictionary,我遇到了一个问题,在我将列表添加到字典后,列表末尾出现了一个不需要的[…] 这是我的密码: class Account: accountInfo = {} #ex. ID : 5FE19C (hexadecimal ID's) def __init__(self): choice = raw_input("Would you like to login or signup?\n") if choice.lower() == "login":
[…]
这是我的密码:
class Account:
accountInfo = {} #ex. ID : 5FE19C (hexadecimal ID's)
def __init__(self):
choice = raw_input("Would you like to login or signup?\n")
if choice.lower() == "login":
self.login()
elif choice.lower() == "signup":
print "Great! Fill in the following."
self.signup()
else:
self.__init__()
def signup(self):
accountID = '%010x' % random.randrange(16**10) # 10 digit hexadecimal ID generator
personalInfo = []
self.accountInfo[accountID] = personalInfo
firstName = raw_input("First Name: ")
lastName = raw_input("Last Name: ")
email = raw_input("E-Mail: ")
password = raw_input("Password: ")
birthdate = raw_input("DOB (DD/MM/YYYY): ")
alias = raw_input("Username/Alias: ")
personalInfo.append(firstName)
personalInfo.append(lastName)
personalInfo.append(email)
personalInfo.append(password)
personalInfo.append(birthdate)
personalInfo.append(alias)
self.accountInfo[accountID].append(personalInfo)
print self.accountInfo
这是我的输出:
>>> {'a92ab2fcea': ['firstName', 'lastName', 'email', 'password', 'birthdate', 'alias', [...]]}
只是想知道它为什么会出现以及如何删除它
谢谢 我想你是说
self.accountInfo[accountID].append(personalInfo)
将来
self.accountInfo[accountID] = personalInfo
您也不需要代码前面的后一行 要了解到底发生了什么,您需要了解参考资料
>>> a = []
>>> test['a'] = a
>>> a.append(1)
>>> a.append(2)
>>> test['a']
[1, 2]
当您执行以下命令时,self.accountInfo[accountID]=personalInfo
它实际做的是将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
意思是修改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]=personalInfo
self.accountInfo[accountID]。追加(personalInfo)
也应该工作李>
但后一种方法不可取,因为它可读性较差。省略号表示递归定义的结构。在您的情况下,您已经将列表附加到了列表本身。谢谢您的帮助:)另外,您提供的两个说明都不会做同样的事情吗?我的意思不是说输出,因为它们显然给出了相同的输出,但总体而言,编写该代码将提供相同的书面参考?