Python 列表推导:如果 Item 不存在,请插入一个值?

Python List Comprehension: If Item Doesn't Exist, Insert a Value?

提问人:Curious Student 提问时间:10/6/2023 更新时间:10/6/2023 访问量:71

问:

我有两个列表,我想将它们合并为两个单独的数组,合并到一个数据帧中。问题是,我正在处理的数据是不完整的,并且缺少信息

数据

Data

创建 3 个列表

Name = [item[0] for item in Data if item]
Age = [item[1] for item in Data if item]
Fruit = [item[2] for item in Data if item]

这会产生:

Name = ['John', 'Eric', 'Dave', 'Mike', 'Charlotte']
Age = ['32', '25', '31']
Fruit = ['Apple', 'Banana', 'Pear']

但是,这显然会导致尝试时出错,因为列表的长度不同。pd.DataFrame

有没有办法提高我的列表理解能力,插入空白或默认值以确保我的列表保持相同的长度,从而产生如下结果:

Name = ['John', 'Eric', 'Dave', 'Mike', 'Charlotte']
Age = ['32', '', '25', '31', '']
Fruit = ['', 'Apple', 'Banana', 'Pear', '']
列表 列表推导式

评论

1赞 InSync 10/6/2023
这回答了你的问题吗?if/else 在列表推导式中

答:

0赞 Birnadin Erick 10/6/2023 #1

我正在努力弄清楚你的代表方式。因为,如果 2nd-row() 在 index 中没有任何东西,那么你的代码应该已经生成了DataData[1]1

Age = ["Apple", 25, 31]

然后是 IndexError,因为最后一行的第 2 列没有任何内容。这意味着存在某种占位符来指示空插槽。因此,您可以检查该值的等效性并相应地分配值。

给定占位符是 ,您可以执行以下操作...None

Name = [ (i[2] if i[2] is not None else "") for i in Data ]

如果每个子数组预处理的长度不同,即没有任何值(我仍然很困惑你为什么没有在最后一行得到 IndexError 用于 Fruit-comprehension),你可以用 None 填充它,然后使用上面的方法。