KeyError:'名称',问题是什么?

时间:2013-08-06 17:35:27

标签: python python-3.x

有谁能告诉我为什么会收到此错误?我发现代码没有问题,当我用**item替换Name,Start,End时,我仍然无法让它工作

print("To finish input enter nothing.")
Schedule = []
Finish = False
while not Finish:
    Name = input("What is the name of the show?: ")
    Start = input("What time does the show start?: ")
    End = input("What time does the show end?: ")
    Schedule.append({'Name':Name, 'Start':Start, 'End':End})
    print("{0:<10}  |  {1:<10}  -  {2:<10}".format(Name,Start,End))
    print("{Name:<10}  |  {Start:<10}  -  {End:<10}  ".format(**item))
    if len(Name) == 0 or len(Start) == 0 or len(End) == 0:
        Finish = True

3 个答案:

答案 0 :(得分:2)

您永远不会创建item

item = {'Name':Name, 'Start':Start, 'End':End}
Schedule.append(item)

答案 1 :(得分:0)

试试这个:

print("To finish input enter nothing.")
Schedule = []
Finish = False
while not Finish:
    Name = raw_input("What is the name of the show?: ")
    Start = raw_input("What time does the show start?: ")
    End = raw_input("What time does the show end?: ")
    Schedule.append({'Name':Name, 'Start':Start, 'End':End})
    print("{0:<10}  |  {1:<10}  -  {2:<10}".format    (Name,Start,End))
    print("{Name:<10}  |  {Start:<10}  -  {End:<10}  ".format    (**item))
    if len(Name) == 0 or len(Start) == 0 or len(End) == 0:
        Finish = True

答案 2 :(得分:0)

print("{Name:<10}  |  {Start:<10}  -  {End:<10}  ".format(**item))

除了你没有定义项目之外,这段代码对我来说没问题吗?

假设该项目是某种类型的容器(如Name,Start,End),您需要将此行更改为以下内容:

print("{:<10}  |  {:<10}  -  {:<10}  ".format(**item))

因此您不使用密钥,它可以按顺序填充字段。 或者:

print("{Name:<10}  |  {Start:<10}  -  {End:<10}  ".format(Name=item[0],
                                                          Start=item[1],
                                                          End=item[2]))

如果你真的打算使用密钥。

基本上,当您没有为该密钥提供值时,您的密钥错误来自使用密钥({名称:&lt; 10})请求值。

希望有所帮助。