【发布时间】:2021-11-25 08:31:03
【问题描述】:
基本上,我试图删除字典列表中的指定字典,但不幸的是,我编写的循环仅用于删除第一个字典,并且无法识别同一列表中的其余字典。该代码类似于以下代码:
list=[{"key1" : "value1", "key2" : "value2", "key3" : "value3"},
{"key1" : "value1", "key2" : "value2", "key3" : "value3"},
{"key1" : "value1", "key2" : "value2", "key3" : "value3"}]
def drop_dic():
print("please insert value you want to remove")
value3=input()
for i in range(len(list)):
if list[i]["key3"] == value3:
key1_drop = vip_list[i]["key1"]
key2_drop = vip_list[i]["key2"]
del list[i]
print ( key1_drop + " and " + key2_drop + " have been removed.")
break
else:
print("This dict doe not exist")
break
基本上,如果我尝试使用第一个 key3 从列表中删除第一个字典,我可以这样做,但其余的字典只会打印“此字典不存在”
我应该改变什么?
从给定值后的字典列表中删除已识别字典的最佳和最简单的方法是什么?
【问题讨论】:
-
我不建议你使用 Python 关键字作为变量,因为它可能会破坏程序。例如,将
list更改为lst或list1。 -
另外,
vip_list是在哪里定义的? -
您的
else声明不应该存在。如果第一个字典没有通过测试,您将立即转到else语句并跳出循环。加上其他评论者所说的所有内容。 -
如果您将
else:与for-loop 放在同一级别,则只有在没有找到匹配项时才会执行(即如果循环没有被break 语句中断)。 -
谢谢你们!!我只是认为您只能在与先前的 if 语句相同的级别上使用 '''else:''' 而不是在它之前。让我有点困惑,我对 python 很陌生
标签: python list dictionary for-loop if-statement