[英]How to Evaluate an Attribute Inside a Nested Python Dict Comprehension
運行以下代碼時,Python2.7拋出NameError。 這是在評估第二個paychecks
時發生的。 第一個命令, employees
,很好。
employees = { employee.ID:employee for employee in company.employees }
paychecks = {
paycheck.ID:paycheck for paycheck in employee.paychecks
for key, employee in employees
}
!!! NameError: global name 'employee' is not defined
這是無效的Python還是代碼中的錯誤? 還有什么更好的方法呢?
您需要以嵌套循環的順序列出循環。 您的訂單倒退了。 您還需要使用dict.items()
方法生成鍵和值。 這有效:
paychecks = {paycheck.ID: paycheck
for key, employee in employees.items()
for paycheck in employee.paychecks}
如您需要首先遍歷employees
前employee
設定。
對於列表,字典和集合理解,將循環描述為嵌套for
語句:
for key, employee in employees.items():
for paycheck in employee.paychecks:
paychecks[paycheck.ID] = paycheck
如果要按指定的順序嵌套循環,則應該立即清楚為什么會在employee
上收到NameError
:
for paycheck in employee.paychecks:
for key, employee in employees.items():
paychecks[paycheck.ID] = paycheck
在此,外部循環嘗試訪問不存在的employee
對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.