我試圖在當前循環範圍之外設置一個變量。如何在Python中的循環之外設置變量
我的場景是這樣的:我有2個列表。一個包含評論對象列表,每個評論都有一個對用戶標識的引用。我的第二個列表包含基於用戶標識的所有用戶對象。
我想要做的是遍歷每個評論,然後修改列表中的評論對象以包含用戶名,以便當我將評論列表傳回時,它具有嵌入的名稱。
到目前爲止,我如何努力實現這一點:
# iterate through the comments and add the display name to the comment obj
for comment in comments:
# Create the user to use later
user = None
# Iterate the comment_users and get the user who matches the current comment.
for comment_user in comment_users:
if comment_user['_id'] is comment['created_by']:
user = comment_user # this is creating a new user in the for comment_user loop
break
print(user)
# get the display name for the user
display_name = user['display_name']
# Add the user display name to the comment
comment.user_display_name = display_name
現在,從什麼我開始從Python的範圍理解,就是在第二個for循環用戶= comment_user行創建第二個for循環範圍內的一個新用戶變量,它忽略了第一個for循環中定義的用戶變量。我使用的是Python 3,所以我認爲nonlocal關鍵字是要走的路,但我不確定這是否只是函數,因爲我不能讓它工作。
所以,我想知道是否有人可以提供一種方法來實現這一目標?有沒有更多'pythonic'的方式來實現這一目標?
不,這ISN字典不會發生什麼事情。 Python沒有塊範圍。 –
我不認爲你對範圍有問題,但爲什麼不在「if」塊中設置註釋的用戶名呢? – Selcuk
感謝您對塊範圍的幫助,有助於瞭解未來。 – Juzzbott