首先我真的很抱歉我不应该问这个问题。我有一个字典列表,这个字典包含如下键值:
dictList = [
{
0:1,
1:1,
2:None
},
{
0:0,
1:None,
2:None
},
{
0:0,
1:1,
2,1
}
]
如果 dictList 的元素都不是,我想将它附加到另一个列表。例如dictList[2]
没有 None 值我想将该字典附加到另一个列表。
我试图用 flag 写它,但我想我必须创建一个 flag 数组并检查 flagArray 不包含 False ,例如:
for i in range(len(dictList)):
dictLoop = lastCombination[i]
flagArray = []
for k,v in dictLoop.items():
if(v is None):
flagArray.append(False)
else:
flagArray.append(True)
if(flagArray.__contains__(False)):
showCombinationWithZero.append(dictList[i])
else:
showCombinationWithOutZero.append(dictList[i])
效果不佳。谢谢你的建议。
您可以使用列表理解来过滤带有None
值的字典。例如:
dictList = [{0:1,1:1,2:None},
{0:0, 1:None, 2:None},
{0:0,1:1,2:1}]
filtered = [d for d in dictList if all(v is not None for v in d.values())]
# [{0: 0, 1: 1, 2: 1}]
这只是从列表中选择满足条件的项目:
all(v is not None for v in d.values())
这是所有值都不是None
.
你可以对那些有以下情况的人做相反的事情None
:
[d for d in dictList if any(v is None for v in d.values())]
要在一个循环中完成,您可以将测试用作两个列表的列表的索引:
dictList = [{0:1,1:1,2:None},
{0:0, 1:None, 2:None},
{0:0,1:1,2:1}]
lists = [[], []]
for d in dictList:
i = all(v is not None for v in d.values())
lists[i].append(d)
showCombinationWithZero, showCombinationWithoutZero = lists
# ([{0: 1, 1: 1, 2: None}, {0: 0, 1: None, 2: None}], [{0: 0, 1: 1, 2: 1}])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句