gpt4 book ai didi

python - 如何减少到一次尝试,除了声明

转载 作者:行者123 更新时间:2023-11-28 20:57:15 25 4
gpt4 key购买 nike

我有一个包含多个 try-except 语句的字典。我尝试使用 r.get() 检索值,但它向我抛出一个 NoneObject 类型错误。我知道 .get() 的默认参数是 None,但它不起作用。我有多个列表,我在每次迭代时附加来自不同字典值的数据。

如何将代码缩减为单个 try-except 语句?谢谢!

这是我的代码:

for num in issue_number:
print(num)
Response = requests.get(f'https://example.com/rest/api/2/issue/Proj-{num}?expand=changelog&maxResults =1000', auth=(example))
r = Response.json()
try:
task_list.append(r['key'])
except TypeError:
task_list.append('NA')
try:
summary_list.append(r['fields']['summary'])
except TypeError:
summary_list.append('NA')
try:
assignee_list.append(r['fields']['assignee']['displayName'])
except TypeError:
assignee_list.append('NA')
try:
created_list.append(r['fields']['created'])
except:
created_list.append('NA')
try:
status_list.append(r['fields']['status']['name'])
except:
status_list.append('NA')
try:
due_date_list.append(r['fields']['duedate'])
except:
due_date_list.append('NA')
try:
resolution_list.append(r['fields']['resolution']['name'])
except:
resolution_list.append('NA')
try:
resolution_date_list.append(r['fields']['resolutiondate'])
except:
resolution_date_list.append('NA')

最佳答案

您可以通过链接多个 get 调用来避免所有这些:

for num in issue_number:
print(num)
Response = requests.get(f'https://example.com/rest/api/2/issue/Proj-{num}?expand=changelog&maxResults =1000', auth=(example))
r = Response.json()
task_list.append(r.get('key', 'NA'))
summary_list.append(r.get('fields', {}).get('summary', 'NA'))
assignee_list.append(r.get('fields', {}).get('assignee', {}).get('displayName','NA'))
created_list.append(r.get('fields', {}).get('created', 'NA'))
status_list.append(r.get('fields', {}).get('status', {}).get('name', 'NA'))
due_date_list.append(r.get('fields', {}).get('duedate', 'NA'))
resolution_list.append(r.get('fields', {}).get('resolution', {}).get('name', 'NA'))
resolution_date_list.append(r.get('fields', {}).get('resolutiondate', 'NA'))

但是,由于您多次执行相同的操作,因此您可能会发现使用函数更方便,例如:

def get_deep(d, *keys, default=None):
for k in keys:
if not d or k not in d:
# Stop early if a key is not found
return default
d = d[k]
return d if d is not None else default

# ...

for num in issue_number:
print(num)
Response = requests.get(f'https://example.com/rest/api/2/issue/Proj-{num}?expand=changelog&maxResults =1000', auth=(example))
r = Response.json()
task_list.append(get_deep(r, 'key', default='NA'))
summary_list.append(get_deep(r, 'fields', 'summary', default='NA'))
assignee_list.append(get_deep(r, 'fields', 'assignee', 'displayName', default='NA'))
created_list.append(get_deep(r, 'fields', 'created', default='NA'))
status_list.append(get_deep(r, 'fields', 'status', 'name', default='NA'))
due_date_list.append(get_deep(r, 'fields', 'duedate', default='NA'))
resolution_list.append(get_deep(r, 'fields', 'resolution', 'name', default='NA'))
resolution_date_list.append(get_deep(r, 'fields', 'resolutiondate', default='NA'))

关于python - 如何减少到一次尝试,除了声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53519822/

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