如何使用在Python的另一个文件中声明和填充的字典?
我在尝试导入一个dictionary对象时遇到了问题,我在另一个Python文件中声明了该对象并填充了键、值对 一点背景知识——我正在访问RedditAPI,然后根据检索到的Reddit注释,在字典中填入子Reddit名称和我给它们的分数。我导入字典的主要目标是找到一种方法来处理所说的数据字典,不必重复调用API,也不必每次测试字典是否运行时都等待重新填充字典 目前,我已经查看了internet和其他有关StackOverflow的问题,这些问题是关于从另一个文件和类中只导入一个dictionary对象的,我不断得到相同的错误,即“module”对象没有属性。请参见下面的示例:如何使用在Python的另一个文件中声明和填充的字典?,python,dictionary,import,Python,Dictionary,Import,我在尝试导入一个dictionary对象时遇到了问题,我在另一个Python文件中声明了该对象并填充了键、值对 一点背景知识——我正在访问RedditAPI,然后根据检索到的Reddit注释,在字典中填入子Reddit名称和我给它们的分数。我导入字典的主要目标是找到一种方法来处理所说的数据字典,不必重复调用API,也不必每次测试字典是否运行时都等待重新填充字典 目前,我已经查看了internet和其他有关StackOverflow的问题,这些问题是关于从另一个文件和类中只导入一个dictiona
from subreddit_score import main
# the dictionary obj that I wish to use in subreddit_score.py is called top_five
d = subreddit_score.top_five
我不确定这是为什么,所以如果有人能帮助我,我将不胜感激
另外:如果有更好的方法,我也将非常感谢您的任何意见。但我主要是想找到一种导入字典变量的方法
谢谢
编辑:
回溯错误:
回溯最近一次呼叫上次:
文件tester.py,第8行,在
d=次reddit_得分。前五名
AttributeError:“module”对象没有属性“top_five”
subreddit_score.py
前五名是subreddit评分模块中函数main的本地值。因为它不在模块范围内,所以您不能像访问它一样访问它-以类似的方式,您将无法从同一模块中的其他函数访问它
最快的解决方法是在模块中使其成为全局的,尽管这可能不是最好的设计:
top_five = None
def main():
global top_five
top_five = fetchRedditData()
现在,您可以从导入此模块的另一个模块访问top_five,但您暂时需要先运行main
您得到的“module”对象没有属性错误,因为您试图获取前五名的值,但它位于函数中,而不是可以从任何地方访问的模块成员
要解决这个问题,您可以将现有的main函数更改为getter类型的对象,也可以将此函数命名为main以外的名称
def main():
# fetchRedditData() returns a dictionary
top_five = fetchRedditData
return top_five
或者,如果您想将字典作为成员对象访问,您可以将其设置为文件中的全局对象,但我建议您不要这样做,因为这是一种糟糕的设计,查看特定的回溯/错误消息可能会有所帮助,但您是否正在某个地方导入subreddit?您给出的代码示例中没有这样做?我的错误,我将编辑带有回溯错误的原始问题。如果您试图在python文件上调用一个方法,我认为您打算在一个对象上调用它,而您没有对象,因为subreddit_score.py文件中没有类。试着改用d=main,让函数返回字典。也可以将main函数重命名为更具描述性的函数,如get_subreddit_data_dictionary或whatevert要澄清,main做什么?只是初始化这个变量吗?或者它也做其他事情?
from subreddit_score import main
# the dictionary obj that I wish to use in subreddit_score.py is called top_five
d = subreddit_score.top_five
def main():
# fetchRedditData() returns a dictionary
top_five = fetchRedditData
return top_five