如何从字典中删除一个键值?



我试图使用del函数删除用户的特定输入,但它删除了它下面的整个键值

for account3 in accounts:
print("t   ", account3["Name"].ljust(25), account3["Username"].ljust(27), account3["Password"])
userinput = input('Account Name you want to delete: ')
for account4 in accounts:
if userinput == account4["Name"]:
userinput = input('Re-enter name to confirm: ')
for account5 in accounts:
if userinput == account5["Name"]:
del account5["Name"], account5["Username"], account5["Password"]
print('Deleted Successfully!')
menu()
break

用户确认删除后,删除字典中的所有值,并给出一个key error: "name"。是否有办法只删除用户提供的信息?

将值设置为None,而不是删除条目。

用这个代替del

account5["Name"], account5["Username"], account5["Password"] = None, None, None

为了避免必须在列表中循环多次才能找到匹配的帐户,我建议构建一个字典,将名称映射到每个帐户,并使用accounts.remove()删除帐户。

accounts_by_name = {account["Name"]: account for account in accounts}
for account in accounts:
print("t   ", account3["Name"].ljust(25), account3["Username"].ljust(27), account3["Password"])
name = input("Account name you want to delete: ")
if name not in accounts_by_name:
continue
if input("Re-enter name to confirm: ") != name:
continue
accounts.remove(accounts_by_name[name])
menu()
break

最新更新