对于我程序的这一部分,我需要编写允许用户更新字典的代码。关键是员工ID,可更新字段是其名称,部门和标题。因此,当查看更新的记录时,它将显示新名称,标题和部门。员工是字典的地方。这就是我到目前为止所做的:
while Choice == '2':
dict_key = input('Enter the employee ID of the employee to change the record: ')
if dict_key in Employees:
n = 3
print('Enter the new Name, Department, and Title')
for i in range(n):
updates = input().split(' ')
Employees[dict_key] = updates[0][1][2]
print('\n')
else:
print('ERROR: That record does not exist!')
print('\n')
Continue = input('Press 1 to update another employee record or 2 to exit: ')
print('\n')
if Continue == '2':
print('*' * 80)
break
运行此代码时出现以下错误:
Traceback (most recent call last):
line 43, in <module>
Employees[dict_key] = updates[0][1][2]
IndexError: string index out of range
ex的所需输出: 如果员工ID 1234 = John,IT,Programmer 更新时间是:John Doe,IT,经理。
员工ID 1234应该是更新条目后的John Doe,IT,Manager。
修改 我试图以一种方式编程,用户可以单独输入更新(名字优先,标题第二..)并使用所有三个输入更新键值(1234)的字典以获得我想要的输出。
对不起,如果我的代码很乱,我正在学习python。也很抱歉,如果我的帖子很乱,第一次也在这里。
答案 0 :(得分:1)
你的.split方法不起作用,因为用户没有输入任何空格('')。而是将代码更改为updates = input().split(',')
应解决其中一个问题
答案 1 :(得分:0)
updates
是一个列表。如果要存储更新的记录,则应写为:
Employee[dict_key] = updates
这将创建一个结构:
{'1234': ['John', 'IT', 'Manager']}
同样如评论所指出,如果输入由,
分隔,则使用split(',')
答案 2 :(得分:0)
您的updates
是一个包含一个字符串的列表,您可以使用for
循环中的每个新输入擦除该字符串。您可能希望使用append
在列表中添加新元素。
所以你的for
循环将是
for i in range(n):
updates.append(input().split(' '))
在代码之前将更新定义为列表之后。
另外,使用split
会使您的updates
成为列表列表:
>>> updates
>>> [['John'], ['IT'], ['programmer']]
我建议你写updates.append(input())
然后输出将是['John', 'IT', 'programmer']
最后,要访问这些新信息,您只需将更新视为一维列表。
希望这是有帮助的
答案 3 :(得分:0)
updates = []
updates.append(input('Enter the new name: '))
updates.append(input('Enter the new department: '))
updates.append(input('Enter the new Title: '))
我还将此部分更新为:
Employees[dict_key] = updates
现在我的输出在更新后如下:
['John Doe', 'IT', 'Manager']
感谢您的反馈!我不知道为什么我之前没有想到这一点。