[英]Iterate through a list of dicts, placing dicts containing a keyword into a new list
我在 Python 中有一個字典列表,在列表中稱為“角色”,字典如下所示:
dict = {"roleName":DisplayName, "accountNumber" : acctNumber} // Info pulled from variables
eg. roles[0] = {"roleName":JSmith, "accountNumber" : 123456}
當我從 API (以及其他處理)中提取此信息時,如果發生任何錯誤(沒有數據或未通過完整性檢查),則添加此短語而不是信息
“錯誤:XXXXXXXXXXXX”
例如: roles[0] = {"roleName":JSmith, "accountNumber": "ERROR: NO ID DATA"}
我想要做的是 go 通過“角色”並拉出(因此刪除)其值中包含“錯誤:”的任何字典並將其放入另一個名為“errorList”的字典列表中
因此,角色將只有不包含“錯誤:XXXXXXXX”的字典,而 errorList 將包含所有包含“錯誤:XXXXX”的字典
我試過這樣的事情:
for i in roles:
if "ERROR:" in (repr((i.values()))):
errorList.append(i)
roles.remove(i)
所以基本上將字典中的所有值(在角色 [i] 處)作為字符串轉儲並尋找“錯誤:”。 如果它有那個短語,那么它將被附加到另一個列表並被刪除。
當我查看這兩個列表時,似乎在原始列表中還有一些剩余的字典(帶有錯誤:)。 我也試過:
for i in roles:
if "ERROR:" in (repr((i.values()))):
errorList.append(i)
for i in roles:
if "ERROR:" in (repr((i.values()))):
roles.remove(i)
進行兩次傳球,但結果相同。
最好的方法是什么?
PS我可能有更多在示例字典中顯示的鍵,所以如果可能的話,我想避免檢查每個鍵:值對並且一次檢查所有值。
我的錯誤是我正在使用原始列表,因此它導致了意外行為 - 在列表之間移動 Python 元素
這通過使用“角色”的副本來工作
for i in roles[:]:
if "ERROR:" in (repr((i.values()))):
errorList.append(i)
roles.remove(i)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.