亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 for 循環中使用兩個變量如何工作

在 for 循環中使用兩個變量如何工作

精慕HU 2022-10-06 19:19:12
我開始閱讀 python 文檔。我最終得到了這樣的聲明:在迭代同一集合時修改集合的代碼可能很難正確處理。相反,循環遍歷集合的副本或創建新集合通常更直接:# Strategy:  Iterate over a copyfor user, status in users.copy().items():    if status == 'inactive':        del users[user]# Strategy:  Create a new collectionactive_users = {}for user, status in users.items():    if status == 'active':        active_users[user] = status我無法理解解決方案。這段代碼是如何工作的?我的意思是我想到了使用一個變量來迭代一個列表,但是使用兩個變量很難理解。來源:https ://docs.python.org/3/tutorial/controlflow.html#for-statements
查看完整描述

3 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

此代碼同時遍歷用戶和狀態:如果用戶狀態為“非活動”,則程序將在第二個 for 循環中刪除該用戶 如果用戶為“活動”,它將將此用戶添加到活動用戶字典中,當你想要要同時循環遍歷字典的鍵值對,必須使用 dict.items() 方法,items() 方法允許您同時循環遍歷每個字典元素(或元組)的項,這里的項目是用戶和狀態,這就是為什么還有2個迭代變量也命名為用戶和狀態



查看完整回答
反對 回復 2022-10-06
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

我也有同樣的困惑。給出的示例不起作用。缺少的部分是開頭的字典對象“用戶”。在本教程的那個時候,我們還沒有被告知它們。https://docs.python.org/3/library/stdtypes.html#index-50

工作版本是

users = { "John": "inactive", 

               "Helen": "active",

               "James": "active", # and so on...

            }


# Strategy:  Iterate over a copy

for user, status in users.copy().items():

    if status == 'inactive':

        del users[user]


# Strategy:  Create a new collection

active_users = {}

for user, status in users.items():

    if status == 'active':

        active_users[user] = status

如果您想查看內容,則可以將其打印出來。嘗試這個:


users = { "John": "inactive", 

               "Helen": "active",

               "James": "active", # and so on...

            }


# Strategy:  Iterate over a copy

for user, status in users.copy().items():

    if status == 'inactive':

        del users[user]


print("Users after deleting.")

for user, status in users.items():

    print(user, status)


users = { "John": "inactive", 

               "Helen": "active",

               "James": "active", # and so on...

            }


# Strategy:  Create a new collection

active_users = {}

for user, status in users.items():

    if status == 'active':

        active_users[user] = status


print("active_users.items")

for user, status in active_users.items():

    print(user, status)


查看完整回答
反對 回復 2022-10-06
?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

簡單示例:假設您有一本實體電話簿,并想在其中查找朋友或家人。Python中的等價物是:


phone_book = { "Mom": "123-456-7890", 

               "Dad": "123-456-7891",

               "John Doe": "555-555-5555", # and so on...

            }

如果您嘗試在實體電話簿中查找您父親的電話號碼,您可以通過直接導航到您所寫的頁面并找到該條目來實現。同樣,在 Python 字典中查找也是一樣的:


print(phone_book['Dad']) # 123-456-7891

現在現實世界的例子已經很清楚了,看看你的例子。通過.items(),您正在檢索一個鍵值對,其中user只是引用users字典中特定值的鍵(如“媽媽”或“爸爸”),并且status是映射到該特定值的值user(如他們的電話號碼)。


但是,您正在獲取users字典的副本,以便您可以遍歷usersto的整個配對statuses。如果你有


for user, status in users.items():

   del[user]

您將修改您嘗試迭代的字典并且會出現錯誤。為避免這種情況,您正在制作它的臨時副本以迭代并從中刪除實際副本user(users想想“從電話簿中刪除媽媽”)。


在第二個塊中,您正在將人員添加到活動用戶字典中。想想“將 Billy 添加到電話簿,電話號碼為“111-222-3344”,但在這種情況下,您要添加user和它們對應的status.


TLDR:字典只是查找內容的一種方式,但是為了查找內容,您需要知道它們的標識符(name在電話簿中,user在用戶字典中)。number如果您想使用該標識符的值(在電話簿、用戶字典中)做某事status,您需要暫時存儲它,直到您完成它。


查看完整回答
反對 回復 2022-10-06
  • 3 回答
  • 0 關注
  • 322 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號