【发布时间】:2011-08-02 22:01:00
【问题描述】:
我想从最终用户那里获取人名和电话号码并附加到字典中。我从一本空字典开始。
在第一个用户输入数据后,程序会说添加了一个新条目并显示更新字典中的内容。到目前为止它运行良好。
当第二个用户输入数据时,它应该做同样的事情:
- 说添加了一个新条目
- 显示字典含义中的所有内容,第一个用户的输入和第二个用户的输入。但它没有按预期工作。它只显示第二个用户的输入,而不是第一个用户的输入。
有人能说出为什么这无法附加到现有数据吗?我每次只看到一个条目(谁是最新的)。
这是程序:
class phonebook:
allphones = {} # Empty dictionary
def __init__ (self, name, phone):
self.pername = name
self.perphone = phone
def adddata(self):
phonebook.allphones[self.pername] = self.perphone # append to the dictionary
print ('A new phone book entry added - {0}:{1}'.format(self.pername, self.perphone)) # confirm the input
print (phonebook.allphones) # display what is inside the phonebook
name = input('Type person\'s name --> ')
phone = input('Type phone\'s name --> ')
adding = phonebook(name, phone)
adding.adddata()
这是更新的程序
class phonebook:
def __init__ (self):
self.allphones = {}
def adddata(self, name, phone):
self.allphones[name] = phone # append to the dictionary
print ('A new phone book entry added - {0}:{1}'.format(name, phone)) # confirm the input
print (self.allphones) # dump the complete phonebook data
name = input('Type person\'s name --> ')
phone = input('Type person\'s phone number --> ')
adding = phonebook()
adding.adddata(name, phone)
这是我得到的输出(我想要{'abc': '123', 'ghj': '505050'} 作为答案)-
>>> ================================ RESTART ================================
>>>
Type person's name --> abc
Type person's phone number --> 123
A new phone book entry added - abc:123
{'abc': '123'}
>>> ================================ RESTART ================================
>>>
Type person's name --> ghj
Type person's phone number --> 505050
A new phone book entry added - ghj:505050
{'ghj': '505050'}
>>>
【问题讨论】:
-
请缩进您的代码。
-
我认为您想使用
raw_input而不是input,因为后者将输入的文本评估为python表达式。
标签: python dictionary append