[英]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.