該程式的目標是允許用戶輸入他們選擇的名稱以形成用戶在另一個函式中生成的字典并對其執行各種操作。這本詞典基于用戶選擇的 3 位身份證號碼,嵌套串列包含用戶選擇的姓名和年齡。已編譯的字典表示為 id_dict4。一個可能的 id(s) 名稱和年齡示例:
{123: ['tom', 44.0], 321: ['kim', 22.0], 444: ['bob', 33.0], 777: ['bob', 66.0]}
我目前的問題是需要允許用戶從字典中的串列中選擇任何名稱(即“kim”、“bob”),然后洗掉所述名稱 - 以及 id 和年齡 - 然后生成一個新串列. 如果有超過 1 個相同的名稱(在本例中為“bob”),則需要洗掉 bob(s) 和 id/age。
這是我迄今為止嘗試過的一個:
name = input("Select a name you wish to delete: ")
for name in id_dict4.values():
if name in id_dict4[id]:
del id_dict4[id]
print(id_dict4)
return id_dict4
它會產生一個關鍵錯誤
我也在我能想到的每個變體中嘗試了這個:
name = input("Select a name you wish to delete: ")
for name in id_dict4.values():
if name in [id_dict4[id][0]]:
del [id_dict4[id]]
print(id_dict4[id])
它只是跳過整個事情就像它不在那里一樣
我是 Python 新手,所以如果這是一件簡單的事情,我深表歉意。
uj5u.com熱心網友回復:
這是一種方法:
data = {123: ['tom', 44.0], 321: ['kim', 22.0], 444: ['bob', 33.0], 777: ['bob', 66.0]}
name = input("Name: ")
# Set up a new data dict
newdata = {}
for k, v in data.items():
# If the inputted name isn't the first item in the value list, add this key:value to the new dict
if v[0] != name.strip():
newdata[k] = v
print(newdata)
您需要在此處使用新的 dict,因為在迭代時嘗試更改現有的 dict 將導致: RuntimeError: dictionary changed size during iteration.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363162.html
上一篇:如何從一個txt檔案讀入一個字典,其中值是一個嵌套字典并且嵌套字典的鍵是我給的?
下一篇:將資料框轉換為嵌套字典
