如何从大型字典中提取仅包含键与GID的字典?
问题:将GID列表转为可按键访问的字典
需求说明
需要把从task_gid_dict中提取的GID整理成可通过键访问的字典,示例格式如下(修正了原示例的语法错误):
{0: ["23172371321", "123421412343"], 1: ["12312412214", "123124124"]}
GID可通过task_gid_dict[j][i]["gid"]获取,task_gid_dict的结构示例为:
{0: [{'gid': '1199729685867432', 'name': 'SAMPLE', 'resource_type': 'task', 'resource_subtype': 'default_task'}, ...]}
现有代码问题
原代码存在变量未初始化、循环逻辑混乱、变量名冲突、列表引用重复等问题,无法正确生成目标字典:
i = 0 j = 0 task_gid_dict_2 = {} for i in range(len(task_gid_dict)): while True: try: task_gid.append(task_gid_dict[j][i]["gid"]) i = i+1 except: j = j+1 break task_gid_dict_2[j] = task_gid task_gid_dict_2
修正后的代码
直接遍历task_gid_dict的键值对,用列表推导式提取GID,简洁高效:
task_gid_dict_2 = {} # 遍历原字典的每个键和对应的任务列表 for key, task_list in task_gid_dict.items(): # 提取当前分组下的所有GID gid_list = [task["gid"] for task in task_list] task_gid_dict_2[key] = gid_list
额外代码修正
原额外代码存在索引错误、字典键重复覆盖的问题,修正后如下:
task_detail = {} # 遍历新生成的GID字典 for key, gid_list in task_gid_dict_2.items(): task_detail[key] = [] for gid in gid_list: # 注意:字典参数中相同键会被覆盖,需使用不同键名 task_info = client.tasks.get_task(gid, {'param1': 'value1', 'param2': 'value2'}, opt_pretty=True) task_detail[key].append(task_info)
内容的提问来源于stack exchange,提问作者Slim Downing
相关产品推荐
相关产品推荐

