Python中如何从列表移除嵌套空字典?求类似JS的简洁实现
Python 简洁过滤空值字典项的方案
原始数据结构
data = [ { "2022": [ { "Title": "Title" }, { "Title": "Title 2" } ] }, { "2023": [] }, { "2024": [] } ]
需求
移除列表中对应值为空列表的字典项(如包含"2023": []、"2024": []的字典)。
原循环实现的问题
你提供的循环写法存在隐患:遍历列表时直接修改原列表(调用remove)会导致遍历索引错乱,可能跳过部分元素,无法正确过滤所有空值项。
类似JS filter的简洁Python方案
Python可以用列表推导式实现和JS filter一样简洁的效果:
data = [item for item in data if len(next(iter(item.values()))) > 0]
代码说明
item.values()获取字典中的所有值,这里每个字典只有一个键值对next(iter(item.values()))取出字典的第一个(也是唯一的)值- 判断该值的长度是否大于0,符合条件的字典项会被保留到新列表中
执行后data将只保留包含"2022"的字典项,空值项被过滤。
内容的提问来源于stack exchange,提问作者ANOL GHOSH
相关产品推荐
相关产品推荐

