从列表中删除词典

2024-10-02 10:28:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下清单:

b = [{'codename': 'add_group', 'id': 5, 'content_type': 2, 'name': 'Can add group'},
 {'codename': 'change_group', 'id': 6, 'content_type': 2, 'name': 'Can change group'},
 {'codename': 'delete_group', 'id': 7, 'content_type': 2, 'name': 'Can delete group'}, 
 {'codename': 'view_group', 'id': 8, 'content_type': 2, 'name': 'Can view group'}, 
 {'codename': 'add_templateresource', 'id': 21, 'content_type': 6, 'name': 'Can add template resource'},
 {'codename': 'change_templateresource', 'id': 22, 'content_type': 6, 'name': 'Can change template resource'},
 {'codename': 'delete_templateresource', 'id': 23, 'content_type': 6, 'name': 'Can delete template resource'}, 
 {'codename': 'view_templateresource', 'id': 24, 'content_type': 6, 'name': 'Can view template resource'}, 
 {'codename': 'add_usermodel', 'id': 13, 'content_type': 4, 'name': 'Can add user'},
 {'codename': 'change_usermodel', 'id': 14, 'content_type': 4, 'name': 'Can change user'}, 
 {'codename': 'delete_usermodel', 'id': 15, 'content_type': 4, 'name': 'Can delete user'}, 
 {'codename': 'view_usermodel', 'id': 16, 'content_type': 4, 'name': 'Can view user'}]

现在,我想删除其值包含\u templateresource子字符串(位于codename键中)的字典


Tags: nameviewaddidtypegrouptemplatecontent
3条回答

我认为最简单的方法是使用列表过滤这些条目:

result = [i for i in b if not i['codename'].endswith('_templateresource')]

此外,您还可以将内置的过滤器函数用于lambda

list(filter(lambda x: not x['codename'].endswith("_templateresource"), b))

如果你需要扩展代码,你可以很容易地做到

def is_bad(element, bad_suffixes):
    for suffix in bad_suffixes:
        if element.endswith(suffix):
            return True
    return False

bad_suffixes = ['_templateresource','_group']

list(filter(lambda x: not is_bad(x['codename'], bad_suffixes), b))

您可以迭代列表的副本并删除匹配的词典

for d in b[:]:
    if '_templateresource' in d['codename']:
        b.remove(d)

print(b)

# [{'codename': 'add_group', 'id': 5, 'content_type': 2, 'name': 'Can add group'},
#  {'codename': 'change_group', 'id': 6, 'content_type': 2, 'name': 'Can change group'},
#  {'codename': 'delete_group', 'id': 7, 'content_type': 2, 'name': 'Can delete group'},
#  {'codename': 'view_group', 'id': 8, 'content_type': 2, 'name': 'Can view group'},
#  {'codename': 'add_usermodel', 'id': 13, 'content_type': 4, 'name': 'Can add user'},
#  {'codename': 'change_usermodel', 'id': 14, 'content_type': 4, 'name': 'Can change user'},
#  {'codename': 'delete_usermodel', 'id': 15, 'content_type': 4, 'name': 'Can delete user'},
#  {'codename': 'view_usermodel', 'id': 16, 'content_type': 4, 'name': 'Can view user'}]

相关问题 更多 >

    热门问题