【发布时间】:2020-10-10 19:38:41
【问题描述】:
这似乎以前运行良好,但突然间我的代码停止工作了。如果 else 都成功运行,但最后它会给出一个关键错误。
这里的数据来自一个名为 userdata 的 json。
这里是代码示例1:
if(userdata["id"] == "Stage1"):
for j in range(len(userdata['Data'])):
if(userdata['Data'][j]['user']==userName):
address=str(processdata['Data'][j]['address'])
addressInst = ''.join(filter(str.isalnum, address))
print(addressInst)
else:
print('not available')
错误:
KeyError: 'user'
我从从 API 获得的 json 中获取用户名,然后我正在调用另一个 api 来更新其地址。我在这个 if 语句之后调用了另一个 API,但由于某些原因,我在这里隐藏了代码。
if(userdata['Data'][j]['user']==userName):
我能够成功调用 API,但最后我每次都收到上述错误,因此我的函数无法运行。
我实际上想避免 if else,谁能告诉我如何保存匹配的数据
userdata['Data'][j]['user']==userName
然后调用API相应地更新数据以避免错误?
【问题讨论】:
-
您似乎已经知道您的字典不包含“用户”键。您没有包含任何有助于诊断原因的内容。我不确定你在寻找什么答案
-
KeyError 仅表示您正在使用 [] 访问数据中不存在的字典键。在这种情况下,dict userdata['Data'][j] 中没有“user”键。您确实应该小心检查代码中是否缺少键,并让您的代码在它们出现时执行其他操作。
-
在现有键集中找不到映射(字典)键时引发KeyError,您正在尝试索引一个值,这就是它发生的原因
-
有什么办法可以存储userdata['Data'][j]['user']==userName的json并避免其他情况?
-
我不关心用户不匹配,我只需要匹配来自该 json 的用户数据
标签: python json pandas numpy python-requests