我试图创建一个函数,返回一个字典并使用它3次,然后将返回的字典加入1。然后将该字典作为值赋给另一个字典中的键。但是print(all\ u dict)只返回1个字典。如果我尝试打印(getdict(f1)),我会得到下面的回溯。如果我不用三次调用同一个函数,而是在每个函数中用相同的命令分别定义每个函数,我就能得到我想要的。但我希望找到一种更简洁的方法来编写代码。你知道吗
你可以在这里找到表格的HTML:https://github.com/Tokaalmighty/topmover_table_html/blob/master/html
Traceback (most recent call last):
File "week4_1.py", line 55, in <module>
print(get_dict(f1))
File "week4_1.py", line 23, in get_dict
bold=topmovers.find_all('b')
AttributeError: 'NoneType' object has no attribute 'find_all'
以下是我的函数代码,以及我如何将3个字典合并为1:
def get_dict(f1):
soup=bs(f1,'html.parser')
topmovers=soup.find('table'{'class':'topmovers'})
bold=topmovers.find_all('b')
…
…
return final
all_dict={}
result = {**get_dict(f1), **get_dict(f2), **get_dict(f3)}
all_dict['result']=result
print(all_dict)
print(get_dict(f1))
你不能就这么做吗?你知道吗
f1是dic 1
f2为dic 2
f3是dic 3
然后将dic f1和f2合并为A1
然后将A1和f3再次合并为A1
您没有显示
f1
、f2
和f3
的原始定义,但我怀疑它看起来像:那么,现在的情况是,从最后一个文件停止的地方开始重复读取文件。如果您已经读取了整个文件(比如让bs来解析它),那么这将是最后一步,随后的读取将返回空值。bs现在在空文件中找不到相应类的表,因此返回
None
。你知道吗要解决这个问题,您可以通过调用
在第二次使用之前;或者可以通过捕获变量中第一次
get_dict
调用的结果来避免重复工作。你知道吗相关问题 更多 >
编程相关推荐