gpt4 book ai didi

python - 如果没有错误就给变量赋值

转载 作者:行者123 更新时间:2023-11-28 22:30:53 24 4
gpt4 key购买 nike

我从 API 获取一个 Json 对象。每次运行脚本时,Json 对象的结构可能都不同。

假设“json_answer”是 json 答案,我正在寻找要存储在“var”中的键“data”的值,每次运行脚本时这个键可能不存在。

我想知道这段代码是否有快捷方式(一行):

try:
var = json_answer['data']
except:
var = None

编辑:

谢谢你的回答,我已经知道get了。但是我在字典里看得很深,我不想尝试所有的“级别”。

让我用这个例子来说明:

dict = {'data':{'values':{'value':True}}}

print(dict['data']['values'].get('time', False)) # print false
print(dict['data']['values'].get('value', False)) # print True

我不知道我可能在字典的哪个级别遇到问题( key 是否存在)。我只有这个“PATH”['data']['values']['value'] 如果想知道它是否存在。我怎样才能用“get”做到这一点?


解决方案:

基于@Ryan♦ 解决方案并扩展到包含内部字典和列表的 JSON 文件:

def _get(obj, keys, default=None):

for key in keys:
if isinstance(obj, dict):
if key not in obj:
return default
elif isinstance(obj, list):
if not len(obj) > key:
return default
else:
return default
obj = obj[key]
return obj

最佳答案

没有内置的东西,但是如果你为它写一个函数,那就太好了:

def get_path(obj, keys, default=None):
for key in keys:
try:
obj = obj[key]
except (KeyError, IndexError):
return default

return obj

d = {'data': {'values': {'value': True}}}

print(get_path(d, ['data', 'values', 'time'], default=False))
print(get_path(d, ['data', 'values', 'value'], default=False))

关于python - 如果没有错误就给变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41887211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com