Python - 使用用户输入更新字典

时间:2017-11-15 09:01:38

标签: python dictionary

对于我程序的这一部分,我需要编写允许用户更新字典的代码。关键是员工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。也很抱歉,如果我的帖子很乱,第一次也在这里。

4 个答案:

答案 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']

感谢您的反馈!我不知道为什么我之前没有想到这一点。