Python 3.6中如何从多个字典返回API JSON解析结果
解决Python合并多页API字典数据的问题
嘿,我懂你现在的烦恼!你用{**mkt1, **mkt2}这种方式合并字典时,要是前后字典有重复的键,后面的会直接覆盖前面的——这就是为啥你只拿到最后一个字典的结果。而且要处理26页的数据,总不能手动把26个字典都写进去吧?下面给你两种常见场景的解决方案:
场景1:每页返回的字典键不重复,要合并成一个大字典
如果API每页返回的字典里的键都是独一无二的,你可以用循环+update()方法来累加合并:
# 先初始化一个空列表,用来存放所有页的字典 all_page_dicts = [] # 循环遍历1到26页,获取每一页的字典数据 for page_num in range(1, 27): # 替换成你实际调用API的代码,得到当前页的字典格式数据 current_dict = your_api_call_function(page_num) all_page_dicts.append(current_dict) # 合并所有字典到一个大字典里 merged_total_dict = {} for single_dict in all_page_dicts: merged_total_dict.update(single_dict)
update()方法会把每个字典的键值对逐一添加到目标字典中,和{**a, **b}逻辑一致,但循环处理多页更高效。
场景2:每页返回的是包含数据列表的字典(更常见的API分页格式)
大部分API分页返回的结构是类似{"data": [条目1, 条目2,...], "page": 页码}的格式,这时候你要合并的是列表里的内容,而不是整个字典:
# 初始化空列表,用来存放所有页的具体数据条目 all_data_items = [] for page_num in range(1, 27): # 调用API获取当前页的响应(字典格式) page_response = your_api_call_function(page_num) # 把当前页的数据列表合并到总列表里 all_data_items.extend(page_response['data']) # 这里的键名根据你的API实际返回调整,比如可能是'results' # 现在all_data_items就是所有26页的完整数据集了,你可以遍历它处理每个条目 for item in all_data_items: # 这里写你解析单个条目的逻辑 print(item['需要的键名'])
小提示
如果你不确定API返回的数据结构,可以用type()函数查看,比如print(type(page_response)),或者直接打印整个响应看看——这对刚接触JSON和Python的新手特别有用,能帮你理清数据层级。
内容的提问来源于stack exchange,提问作者Daryl Heppner
相关产品推荐
相关产品推荐

