检查字典列表是否具有包含指定值的字典

时间:2018-12-25 10:47:06

标签: python python-3.x list dictionary

我正在尝试检查字典列表是否包含具有指定值的键 如果它确实包含具有该值的字典,则我要定位此字典,如果不包含,则要创建字典

这是我的字典列表

my_list = [
   {"name": "home", "content": "home"}, {"name": "contact", "content": "contact"}
]

我想检查my_list是否有一个包含键"name"和值为"events"的字典,该字典不存在,所以我需要将其添加到列表中如果可以的话,我想修改字典键"content"

if {"name": "events"} in my_list:
   list_found = my_list[index_of_the_dictonary]
else:
   my_list.append({
      "name": "events"
      "content": []
   })

2 个答案:

答案 0 :(得分:3)

您可以将else添加到for循环中以解决问题:

my_list = [
   {"name": "home", "content": "home"},
   {"name": "contact", "content": "contact"}
]

for x in my_list:
    if x.get('name') == 'events':
        print('Dictionary Found')
        break
else:
    my_list.append({'name': 'events', 'content': []})

print(my_list)
# [{'name': 'home', 'content': 'home'}, {'name': 'contact', 'content': 'contact'}, {'name': 'events', 'content': []}]

只有在正常执行else循环(即不执行for的情况下,才执行forbreak循环。

答案 1 :(得分:2)

尝试一下:

for d in my_list:
    if d.get('name') == 'events':
        list_found = d # d is the dictonary you expected
        break
else:    
    my_list.append({"name":"events", "content": []}) # Create it