【问题标题】:What is wrong with my dictionary?我的字典有什么问题?
【发布时间】:2016-11-27 08:51:42
【问题描述】:

我正在学习用 Python 创建字典,我创建了下面的字典来获取当地警察局预约中心的一名被拘留者的信息。该信息是用户输入的:

local_police = {'Name' : " ",'Phone number' : '','Address' : " ", 'Registered' : ' ','posession' : []} """a dictionary for the suspects details"""

local_police['Name']=raw_input("Enter suspects name:")
local_police['Phone Number']=input("Enter phone number:")
local_police['Address']=raw_input("Enter Address:")
local_police['Registered']=raw_input("Has suspect been registered? Y/N:")
local_police['posession']=raw_input("items in suspect's backpack (seperate each item with a comma):")

print local_police

我注意到我无法在字典中的“电话号码”键中成功输入任何值。谁能解释一下原因?

编辑:我将通过添加以下内容进一步澄清该帖子:

我的预期输出如下所示:

Enter suspects name:thief dude
>>> local_police['Address']=raw_input("Enter Address:")
Enter Address:theif house
>>> local_police['Registered']=raw_input("Has suspect been registered? Y/N:")
Has suspect been registered? Y/N:Y
>>> local_police['posession']=raw_input("items in suspect's backpack (seperate each item with a comma):")
items in suspect's backpack (seperate each item with a comma):gun,knife,puppy
>>> local_police['Phone Number']=raw_input("Enter phone number:")
Enter phone number:111111
>>> print local_police
{'Phone number': '', 'Name': 'thief dude', 'Registered': 'Y', 'Phone Number': '111111', 'posession': 'gun,knife,puppy', 'Address': 'theif house'}

您会注意到,在打印时,为电话号码打印了两个键。一个值为 111111(用户输入的值),另一个为空:

{'Phone number': '', 'Name': 'thief dude', 'Registered': 'Y', 'Phone Number': '111111', 'posession': 'gun,knife,puppy', 'Address': 'theif house'}

【问题讨论】:

  • 您使用了input 而不是raw_input。附带说明,第一行的初始化是多余的,您可以简单地创建一个空字典:local_police = {}
  • raw_input 给出同样的错误
  • 哪个是?我们无法在没有看到的情况下猜测您遇到了什么错误。
  • @ZenMournster 你能发布错误以及你期望的输出吗?
  • “输入成功”是什么意思?插入该字段的输入时是否收到异常?或者你只是说之后当你尝试local_police['Phone number']它返回''?在后一种情况下,正如 Nenad 在他的回答中提到的那样,您在初始定义和输入中使用不同的键,从而创建了两个键值对。

标签: python python-2.7 dictionary key


【解决方案1】:

我认为你的问题是电话号码在字典中是用小写的 n 写的,但是当你要求输入时,它是用大写的 n 写的电话号码。

【讨论】:

  • 可能 是一个有效的答案,所以我会编辑掉你想将其作为评论发布的事实(即 不是滥用答案发布 cmets 的正当理由!)。但是,OP 提到了一个 error (没有说明他所说的“错误”是什么意思),您的回答不会解释触发的异常,而只是解释为什么结果不是 OP 所期望的。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-05
  • 1970-01-01
  • 2019-02-06
  • 2020-09-06
  • 1970-01-01
  • 2014-07-15
  • 1970-01-01
相关资源
最近更新 更多