Python函数使用了3次,但只返回了

2024-09-28 22:16:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个函数,返回一个字典并使用它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))   

Tags: 函数代码get字典htmltableresultall
2条回答

你不能就这么做吗?你知道吗

f1是dic 1

f2为dic 2

f3是dic 3

然后将dic f1和f2合并为A1

然后将A1和f3再次合并为A1

def MergeDic(f1, f2, f3):
    A1 = f1.copy()
    A1.update(f2)
    A1.update(f3)
    return A1

您没有显示f1f2f3的原始定义,但我怀疑它看起来像:

f1 = open(...)

那么,现在的情况是,从最后一个文件停止的地方开始重复读取文件。如果您已经读取了整个文件(比如让bs来解析它),那么这将是最后一步,随后的读取将返回空值。bs现在在空文件中找不到相应类的表,因此返回None。你知道吗

要解决这个问题,您可以通过调用

f1.seek(0)

在第二次使用之前;或者可以通过捕获变量中第一次get_dict调用的结果来避免重复工作。你知道吗

相关问题 更多 >