如果其关键字包含单词,则删除字典项目

时间:2018-11-09 02:43:56

标签: python

我有这本字典:

a={'sting1':1,'string2':2,'string3':3,'string4 null':4}

我要删除键为空的项。

output={'sting1':1,'string2':2,'string3':3}

我发现了startwith应用程序,并尝试使用key.find('null')!=-1,但是没有成功

3 个答案:

答案 0 :(得分:4)

执行dictionary comprehension

print({k:v for k,v in a.items() if not 'null' in k})

如果版本低于2.6:

print(dict((k,v) for k,v in a.iteritems() if not 'null' in k))

请参见iteritems,而不是items,这仅在python 2中(所有python 2版本)

感谢@john,“您也可以写成'null',而不是k,有些人会更容易阅读”。

答案 1 :(得分:1)

在Python中,要检查一个字符串是否包含在另一个字符串中,您可以像这样简单地使用in关键字:

if "null" in "something null bla bla":
    # null is in the string

要删除所有包含null的项目,您可以简单地循环遍历它们,检查它们是否包含null,如果存在则将其删除:

for key in list(a.keys()):
    if "null" in key:
        del a[key]

请注意,我们必须创建所有键的列表,否则在迭代时无法从dict中删除项目。

如果您要创建一个删除了项目的新字典,则可以使用dict comprehension作为其他答案,或者只使用普通的for循环:

output = {}
for key, value in a.items():
    if "null" not in key:
        # key is ok => add to output
        output[key] = value

答案 2 :(得分:0)

这也可以就地完成:

l = []
for k in a:
    if 'null' in k:
        l.append(k)

for k in l:
    del a[k]

是否:

b = {}
for k in a:
    if 'null' not in k:
       b[k] = a[k]