我有一系列的列表(在字典中),我想删除任何只有None
作为元素的列表。但是,列表有各种不同的格式,例如
x=[None,[None],[None]]
x=[None,None,None]
x=[None,[None,None],[None,None]]
其中任何None
都可以替换为一个值。你知道吗
任何示例都可以使用以下词典:
dict={"x1": [None,None,None],"x2": [None,[None],[None]], "x3": [None,[1],[0.5]],
"x4":[None,[None,None],[None,None]],"x5":[None,[180,-360],[90,-180]]}
在本例中,我希望保留(key,value)
对"x3"
和"x5"
,因为它们包含的值不是全部None
,而是要删除"x1"
、"x2"
和"x4"
,从而返回:
dict={"x3": [None,[1],[0.5]], "x5":[None,[180,-360],[90,-180]]}
字典中各种列表(x
)的简单列表理解,例如
any(e is not None for e in x)
将[None]
项读取为not None
,并返回True
。你知道吗
如何确定哪些列表实际包含值而不是[None]
元素。我已经研究了删除方括号的选项,例如使用itertools
,如这里所建议的[Remove brackets from list in Python],但是这些都依赖于列表中的所有元素以相同的方式格式化,而我的格式是混合的。我无法更改格式,因为软件中的其他地方需要此格式。你知道吗
您可以编写一个自定义递归函数来检查嵌套列表的所有元素是否都是
None
。你知道吗这种解决方案在性质上与Keyur Potdar类似,但它适用于各种容器,不仅适用于
list
:根据Benjamin的注释,如果
list_input
中的所有嵌套列表都包含相同的值val_to_check
,则此函数应返回True,否则返回False:相关问题 更多 >
编程相关推荐