如何获取字典值列表

调频

首先我真的很抱歉我不应该问这个问题。我有一个字典列表,这个字典包含如下键值:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章