python - 在python中使用zip函数时出错

标签 python list python-2.6

我有一个非常大的数据集,其中包含嵌套列表。这是我的数据集的一个小示例(结构与此完全相同):

[[['id', 'ENS001'], ['name', 'EGSB'], ['Trans', 'TTP']], [['id', 'EN02'], ['name', 'EHGT'], ['Trans', 'GFT']]]

我使用了这段代码:

z = [zip(*i) for i in l]

得到这样的东西:

[[('id', 'name', 'Trans'), ('ENS001', 'EGSB', 'TTP')], [('id', 'name', 'Trans'), ('EN02', 'EHGT', 'GFT')]]

对于像示例这样的小数据集,它工作得很好,但是当我将它用于我的大数据集时,它会给出许多空列表。我使用的是 Python 2.6.6。

最佳答案

最可能的原因是您的大数据集中有空列表,如以下示例所示:

In [11]: l = [[['id', 'ENS001'], ['name', 'EGSB'], ['Trans', 'TTP']], \
   ....: [['id', 'EN02'], ['name', 'EHGT'], []]]
                                            ↑↑ an empty list here...

In [12]: [zip(*i) for i in l]
Out[12]: [[('id', 'name', 'Trans'), ('ENS001', 'EGSB', 'TTP')], []]
                                                                ↑↑ ...gives an empty
                                                                      list here

发生这种情况是因为 zip 在用完最短迭代中的元素时停止。

如果您想过滤掉空列表,可以这样做:

In [15]: [zip(*filter(None, i)) for i in l]
Out[15]: 
[[('id', 'name', 'Trans'), ('ENS001', 'EGSB', 'TTP')],
 [('id', 'name'), ('EN02', 'EHGT')]]

关于python - 在python中使用zip函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27694229/

相关文章:

python - 在 pypi 包索引上查找包版本的优雅方法是什么?

python - ETL 过程中数据库中的重复记录问题

python - 在 Python 中引用子目录之间的文件的正确方法和 VSCode 设置是什么

c++ - push_back 上的 STL 列表段错误

Python 扩展列表理解

python - 如何通过 Python 中的子类实例访问基类变量?

python - 我需要创建一个字典来计算名称在列表中出现的次数

Python:修改列表的排序顺序

python - 如何在不按回车键的情况下在 python 中获取按下的键?

imagemagick - Python Magickwand pdf 到图像转换并调整图像大小