簡體   English   中英

如何評估嵌套Python Dict理解內的屬性

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

如您需要首先遍歷employeesemployee設定。

對於列表,字典和集合理解,將循環描述為嵌套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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM