You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用列表推导式替代嵌套循环实例化ReponseGroupInstance对象

如何用列表推导式基于嵌套字典实例化类并获取外层字典Key作为属性值?

问题背景

现有如下类定义:

class ReponseGroupInstance:
    def __init__(self, id, questions, parentId):
        self.id = id
        self.questions = questions
        self.parentId = parentId

需要基于嵌套字典formInstances['responses']实例化该类对象,核心要求是ReponseGroupInstance.parentId对应外层字典的Key,而非内层字典中的数据。

已通过嵌套for循环结合工厂函数实现需求,但尝试用列表推导式时,因外层parentId列表与内层键值对列表长度不匹配,使用zip方法失败,希望用列表推导式替代嵌套循环完成实例化。

假设formInstances['responses']的结构示例如下:

formInstances = {
    'responses': {
        'parent_001': {
            'group_001': ['question1', 'question2'],
            'group_002': ['question3']
        },
        'parent_002': {
            'group_003': ['question4', 'question5', 'question6']
        }
    }
}

解决方案

直接使用嵌套列表推导式即可,逻辑与嵌套for循环完全一致,无需使用zip:

response_group_instances = [
    ReponseGroupInstance(group_id, questions, parent_id)
    for parent_id, groups in formInstances['responses'].items()
    for group_id, questions in groups.items()
]

说明

这个列表推导式的执行顺序和以下嵌套循环完全相同:

response_group_instances = []
for parent_id, groups in formInstances['responses'].items():
    for group_id, questions in groups.items():
        response_group_instances.append(ReponseGroupInstance(group_id, questions, parent_id))

外层循环遍历外层字典的键值对(parent_id为外层Key),内层循环遍历每个外层值对应的内层字典,每次实例化时将外层的parent_id传入构造函数,完美匹配需求。

内容的提问来源于stack exchange,提问作者Clay Campbell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:20:34