我有一个嵌套的 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
对象作为键,而不仅仅是名称。
关于python - 使用嵌套 for 循环的推导式创建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35625010/