【发布时间】:2021-11-21 05:47:25
【问题描述】:
我的程序会抓取一些网站并创建两个列表,一个用于类别,另一个用于内容。然后我使用dict(zip(......)) 命令匹配它们并将它们放入字典中。
类似这样的:
complete_dict=dict(zip(category_list,info_list))
我遇到的问题是我的程序正在读取两个列表(类别、信息)中的空元素。只要我以后可以删除它们就可以了。问题是,我没有找到这样做的方法。读出时,两个列表都包含空元素,而不是空字符串,而更像是列表中的空列表。我尝试在压缩它们后在列表和字典中删除它们,使用如下命令:
category_list=filter(None, category_list)
或:
info_list=[x for x in info_list if x != []]
当然对两个列表都进行了操作。
没有一个占上风。然后我尝试在字典中这样做:
dict((k, v) for k, v in complete_list.iteritems() if v)
此时我还能尝试什么?
编辑
我尝试了过滤,但我的条件设置不正确,或者根本无法解决问题。我正在寻找其他方式,因此它不是另一个线程的副本(尽管该线程有一些有用的信息)。
编辑 2
我现在得到的是:
[u'info1', u'info2', u'info3', u'info4', ...]
[]
[]
[]
[]
[u'info1', u'info2', u'info3', u'info4', ...]
[]
[]
[]
[u'info1', u'info2', u'info3', u'info4', ...]
信息 1、2、3 和 4(实际上还有更多元素)是从网站上抓取的内容,抱歉,我无法真正透露它们是什么,但这个想法显示了。这是列表之一(info_list),我正在尝试删除所有卡在中间的[],所以结果应该是这样的
[u'info1', u'info2', u'info3', u'info4', ...]
[u'info1', u'info2', u'info3', u'info4', ...]
[u'info1', u'info2', u'info3', u'info4', ...]
等等
编辑 3
dict(zip(...)) 之后我的结果是这样的
{u'category1': u'info1', u'category2': u'info2', ...}
{}
{}
{u'category1': u'info1', u'category2': u'info2', ...}
{u'category1': u'info1', u'category2': u'info2', ...}
{}
{}
{}
等等。
【问题讨论】:
-
Python: Filter a dictionary 的可能重复项
-
请显示预期的输入和输出。你描述的方式对我来说仍然很模糊。
-
@Shashank 请检查编辑。提前谢谢你
-
这看起来不像单个空键或值的问题。看起来你一遍又一遍地运行这种理解,有时,它会产生一个完全空的字典。可能是周围代码的问题。
-
嗨@user2357112 你认为有办法通过简单地删除那些空的来解决它吗?
标签: python list dictionary empty-list