我有以下格式的字典
mydict =
{ a: [1, 2],
b: [2, 2],
c: [1, 0],
d: [1, 1]
}
如果任何值为None
{ a: [1, None],
b: [2, 2],
c: [1, 0],
d: [1, 1]
}
我要删除那对key:value
。
输出应为
{
b: [2, 2],
c: [1, 0],
d: [1, 1]
}
我正在像这样打印它,
for key, values in mydict.items():
print key, values
.
.
.
我想删除None
而不在我的for
循环内开始新的循环,所以我尝试了这个,
我尝试过
for key, values in mydict.items() if values.items is not None:
但是它不断给我带来无效的语法错误,
SyntaxError: invalid syntax
答案 0 :(得分:3)
使用字典理解:
d = { 'a': [1, None],
'b': [2, 2],
'c': [1, 0],
'd': [1, 1] }
print({k:v for k, v in d.items() if None not in v})
# {'b': [2, 2], 'c': [1, 0], 'd': [1, 1]}
如果您需要像您这样的循环:
for key, value in d.items():
if None not in value:
print(key, value)
# do your calculations here
答案 1 :(得分:2)
您可以尝试
mydict = { 'a': [1, None],
'b': [2, 2],
'c': [1, 0],
'd': [1, 1]
}
from copy import copy
newdict = copy(mydict)
for key, values in mydict.items():
if None in values:
newdict.pop(key)
print newdict
答案 2 :(得分:2)
更改
for key, values in mydict.items(): print key, values
进入
for key, values in mydict.items(): if (None not in values): print key, values
答案 3 :(得分:1)
尝试使用filter
+ lambda
:
d=dict(filter(lambda x: None not in x[1], list(d.items())))
print(d)
或带有for循环:
newd = {}
for k,v in d.items():
if not None in v:
newd.update({k:v})
答案 4 :(得分:0)
使用> ex.list <- list()
> ex.list[[1]] <- integer(0)
> ex.list[[2]] <- c(1,2,3)
> ex.list
[[1]]
integer(0)
[[2]]
[1] 1 2 3
> unlist(ex.list)
[1] 1 2 3
dictionary comprehension
输出:
your_dict = {key:value for key,value in my_dict.items() if None not in value}