Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用在Python的另一个文件中声明和填充的字典?_Python_Dictionary_Import - Fatal编程技术网

如何使用在Python的另一个文件中声明和填充的字典?

如何使用在Python的另一个文件中声明和填充的字典?,python,dictionary,import,Python,Dictionary,Import,我在尝试导入一个dictionary对象时遇到了问题,我在另一个Python文件中声明了该对象并填充了键、值对 一点背景知识——我正在访问RedditAPI,然后根据检索到的Reddit注释,在字典中填入子Reddit名称和我给它们的分数。我导入字典的主要目标是找到一种方法来处理所说的数据字典,不必重复调用API,也不必每次测试字典是否运行时都等待重新填充字典 目前,我已经查看了internet和其他有关StackOverflow的问题,这些问题是关于从另一个文件和类中只导入一个dictiona

我在尝试导入一个dictionary对象时遇到了问题,我在另一个Python文件中声明了该对象并填充了键、值对

一点背景知识——我正在访问RedditAPI,然后根据检索到的Reddit注释,在字典中填入子Reddit名称和我给它们的分数。我导入字典的主要目标是找到一种方法来处理所说的数据字典,不必重复调用API,也不必每次测试字典是否运行时都等待重新填充字典

目前,我已经查看了internet和其他有关StackOverflow的问题,这些问题是关于从另一个文件和类中只导入一个dictionary对象的,我不断得到相同的错误,即“module”对象没有属性。请参见下面的示例:

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