【发布时间】:2016-06-08 02:12:39
【问题描述】:
我有一个嵌套的 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
【问题讨论】:
-
你忘记了
if。 -
如何你的失败了?有错误吗?
-
说
TypeError: unhashable type: 'ContractWithId'失败 -
对,你也忘了
.name属性。 -
each_contract.name与each_contract不同
标签: python python-3.x dictionary list-comprehension