在字典列表中寻找键值

时间:2018-12-25 10:01:14

标签: python list dictionary

我正在尝试编写一个函数,当它收到一个数字时,它将通知用户它是否已经在列表中,就像这样:

TodoList=[{'id':5} ,{'id':3}  ,{'id':6}];
def AddItem(id):
     if id in TodoList:
          print('inside');

但是我不知道如何搜索它是否在词典列表中,我该怎么做?

4 个答案:

答案 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