繁体   English   中英

使用带有嵌套for循环的理解来创建字典

[英]Create a dictionary using comprehension with nested for loops

我有一个嵌套的for循环,用于设置新字典的键,值。 发现了列表推导后,我想知道是否可以对字典使用相同的逻辑。

我尝试对当前失败的字典进行一行理解:

dict_contract_name_id = {each_contract: each_contract.id for each_inuring_layer in context.program_obj.inuringLayers for each_contract in each_inuring_layer.contracts}

它通过说出TypeError: unhashable type: 'ContractWithId'失败。

我正在尝试将实际代码转换为一行理解:

dict_contract_name_id = {}
for each_inuring_layer in context.program_obj.inuringLayers:
    for each_contract in each_inuring_layer.contracts:
        if each_contract.name in contracts:
            dict_contract_name_id[each_contract.name] = each_contract.id

您忘记了.name属性以及if过滤器:

dict_contract_name_id = {
    each_contract.name: each_contract.id
    for each_inuring_layer in context.program_obj.inuringLayers
    for each_contract in each_inuring_layer.contracts
    if each_contract.name in contracts}

您试图将each_contract对象用作键,而不仅仅是名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM