试图从字典中检索键时出错

2024-05-08 18:08:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我的函数“getint”返回以下值:

响应:0 编号:70402 类型:1 有价值的 int值:15

我已经将上面的值存储在字符串s中,并在下面的代码中打印'int value'数据15。在

代码:

s= '''response: 0
      id: 70402
      type: 1
      has value
      int value: 15
   '''

s=s.replace("has","has:")
s = s.strip()
print s
d = {}
for i in s.split('\n'):
    try:
        key, val = i.split(":")
        d[key.strip()] = val.strip()
        print d['int value']
    except ValueError:
        print "no key:value pair found in", i

在输出中获取KeyError:'int value'。在

输出:

  response: 0
  id: 70402
  type: 1
  has: value
  int value: 15 Traceback (most recent call last):   File "/home/tests/test_lang.py", line 18, in <module>
print d['int value'] KeyError: 'int value'

Tags: key函数代码inidvalueresponsetype
3条回答

您的错误是因为当您通过s tring时。你的第一个i: response = 0 但你print d['int value'],而{}当时没有。这将起作用:

s= '''response: 0
  id: 70402
  type: 1
  has value
  int value: 15
'''

s=s.replace("has","has:")
s = s.strip()
print s
d = {}
for i in s.split('\n'):
    try:
        key, val = i.split(":")
        d[key.strip()] = val.strip()
    except ValueError:
        print "no key:value pair found in", i
print d['int value']

如果你想得到钥匙的错误。您应该添加:

^{pr2}$

或者将ValueError改为KeyError

你的代码有一些问题。试试下面的方法。在

for i in s.split('\n'):
    key, val = i.split(":")
    d[key.strip()] = val.strip()

try:
    print(d['int value'])
except KeyError:
    print("no 'int value' found in", d)

说明

  1. 使用KeyError捕获密钥错误。在
  2. 仅在试图捕获错误的代码部分使用try/except。在
  3. 除非您有特定的原因,否则您可以在创建字典后如上所述检查密钥。在

在for循环外写入print d['int value']

s= '''response: 0
      id: 70402
      type: 1
      has value
      int value: 15
   '''

s=s.replace("has","has:")

s = s.strip()
print s
d = {}
for i in s.split('\n'):
    try:
        key, val = i.split(":")
        d[key.strip()] = val.strip()

    except ValueError:
        print "no key:value pair found in", i
print d['int value']

相关问题 更多 >

    热门问题