gpt4 book ai didi

python - 从列表中剥离空元素

转载 作者:太空宇宙 更新时间:2023-11-04 09:07:16 25 4
gpt4 key购买 nike

我有一个像这样的 python 数据结构

dl= [{'plat': 'unix',   'val':['', '',   '1ju', '', '',   '202', '',   '']},
{'plat': 'Ios', 'val':['', '', '', '', 'Ty', '', 'Jk', '']},
{'plat': 'NT', 'val':['', '', 1, '', '' , '202', '', '']},
{'plat': 'centOs', 'val':['', '', '', '', '', '202', '', '']},
{'plat': 'ubuntu', 'val':['', 'KL', '1', '', '', '', '', '9i0']}]
^ ^
| |
\ /
Delete these

我正在尝试删除列表 'val' 中每个列表中同一列中的值为空的位置。例如,列表 (dl) 中的位置 0 和 3。我正在尝试获得这样的输出:

Output= [{'plat': 'unix',   'val':['',   '1ju', '',   '202', '',   '']},
{'plat': 'Ios', 'val':['', '', 'Ty', '', 'Jk', '']},
{'plat': 'NT', 'val':['', 1, '' , '202', '', '']},
{'plat': 'centOs', 'val':['', '', '', '202', '', '']},
{'plat': 'ubuntu', 'val':['KL', '1', '', '', '', '9i0']}]

最佳答案

让我们分两步完成。首先,找到要删除的索引:

lists = [e['val'] for e in dl]
idx_to_remove = [i for i, elem in enumerate(map(any, zip(*lists))) if not elem]

其次,让我们过滤原始列表:

for l in lists:
l[:] = [elem for i, elem in enumerate(l) if i not in idx_to_remove]

结果:

>>> pprint.pprint(dl)
[{'plat': 'unix', 'val': ['', '1ju', '', '202', '', '']},
{'plat': 'Ios', 'val': ['', '', 'Ty', '', 'Jk', '']},
{'plat': 'NT', 'val': ['', 1, '', '202', '', '']},
{'plat': 'centOs', 'val': ['', '', '', '202', '', '']},
{'plat': 'ubuntu', 'val': ['KL', '1', '', '', '', '9i0']}]

关于python - 从列表中剥离空元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19162812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com