我正在尝试编写一个函数,当它收到一个数字时,它将通知用户它是否已经在列表中,就像这样:
TodoList=[{'id':5} ,{'id':3} ,{'id':6}];
def AddItem(id):
if id in TodoList:
print('inside');
但是我不知道如何搜索它是否在词典列表中,我该怎么做?
答案 0 :(得分:1)
比其他答案更有效率,因为它会在找到第一个匹配项后立即停止(并支持其中这些词典将具有更多键值对的情况):
TodoList = [{'id': 5}, {'id': 3}, {'id': 6}]
def AddItem(i):
if any(d['id'] == i for d in TodoList):
print('inside')
AddItem(5)
答案 1 :(得分:0)
您可以使用any:
TodoList=[{'id':5} ,{'id':3} ,{'id':6}];
def AddItem(i):
if any(i in d for d in TodoList):
print('inside')
作为旁注,请勿将id用作变量名,它会掩盖内置函数id。如果要在字典中搜索给定值,将按照@DeepSpace的建议进行操作:
def AddItem(i):
if any(i in d.values() for d in TodoList):
print('inside')
AddItem(5)
输出
inside
答案 2 :(得分:0)
我们创建一个嵌套字典的所有值的列表,然后搜索它们。
TodoList=[{'id':5} ,{'id':3} ,{'id':6}];
def AddItem(id):
values_TodoList = [i['id'] for i in TodoList]
if id in values_TodoList:
print('inside');
else:
print('not inside')
AddItem(5)
inside
AddItem(10)
not inside
答案 3 :(得分:0)
您应该使用安全的字典方法get()。
这是解决问题的方法...
TodoList=[{'id':5} ,{'id':3} ,{'id':6}];
def AddItem(id):
values = [i.get('id') for i in TodoList]
if id in values:
return True
return False
AddItem(2)
[OUT]: False
AddItem(3)
[Out]: True