lan*_*ane 4 python string dictionary list python-2.7
我想从字典中删除包含特定字符串的值,并因此删除任何具有空列表作为值的键。
mydict = {
'Getting links from: https://www.foo.com/':
[
'+---OK--- http://www.this.com/',
'+---OK--- http://www.is.com/',
'+-BROKEN- http://www.broken.com/',
'+---OK--- http://www.set.com/',
'+---OK--- http://www.one.com/'
],
'Getting links from: https://www.bar.com/':
[
'+---OK--- http://www.this.com/',
'+---OK--- http://www.is.com/',
'+-BROKEN- http://www.broken.com/'
],
'Getting links from: https://www.boo.com/':
[
'+---OK--- http://www.this.com/',
'+---OK--- http://www.is.com/'
]
}
val = "is"
for k, v in mydict.iteritems():
if v.contains(val):
del mydict[v]
Run Code Online (Sandbox Code Playgroud)
我想要的结果是:
{
'Getting links from: https://www.foo.com/':
[
'+-BROKEN- http://www.broken.com/',
'+---OK--- http://www.set.com/',
'+---OK--- http://www.one.com/'
],
'Getting links from: https://www.bar.com/':
[
'+-BROKEN- http://www.broken.com/'
]
}
Run Code Online (Sandbox Code Playgroud)
如何删除所有包含字符串的字典值,然后删除所有没有值的键?
您可以在字典理解中使用列表理解。在迭代字典时,不应更改字典中的项目数。
res = {k: [x for x in v if 'is' not in x] for k, v in mydict.items()}
# {'Getting links from: https://www.foo.com/': ['+-BROKEN- http://www.broken.com/',
# '+---OK--- http://www.set.com/',
# '+---OK--- http://www.one.com/'],
# 'Getting links from: https://www.bar.com/': ['+-BROKEN- http://www.broken.com/'],
# 'Getting links from: https://www.boo.com/': []}
Run Code Online (Sandbox Code Playgroud)
如果您希望删除列表值为空的项目,您可以在后续步骤中:
res = {k: v for k, v in res.items() if v}
Run Code Online (Sandbox Code Playgroud)