【发布时间】:2019-03-25 10:56:01
【问题描述】:
我正在尝试将所有内容从 .json 文件加载到 python 中的字典。
谁能向我解释为什么下面的方法不起作用?
my_dict = {}
def change_dict(str_file_path, dict_param):
with open(str_file_path) as opened_file:
dict_param = json.load(opened_file)
opened_file.close
change_dict(my_file_path, my_dict)
我用于文件的路径是正确的,当我直接使用 my_dict 而不是使用字典参数时,上述方法有效(但这不是我想要做的)。
我一直在使用 Pycharm,视觉辅助工具“向我展示”它将字典参数视为以后不会使用的东西,这也没有任何意义。
打印 my_dict 显示 {} 。我想如果我尝试将字典参数作为值返回到我的全局字典中它会起作用(但现在我不想这样做)但我想知道为什么上面的方法不起作用。
有什么想法吗?
谢谢
【问题讨论】:
-
只是一个旁注。不需要
opened_file.close,因为您使用的是with open -
你想做什么?将 json 文件读入字典?如果是这样 - 请参阅我的答案。
-
这一行
dict_param = json.load(opened_file)仅将名称dict_param重新绑定到change_dict()函数范围内的新字典。您需要返回新的dict并分配给全局空间中的my_dict来更改它。 -
@SuperShoot,所以在
change_dict(my_file_path, my_dict),my_dict实际上不会“替换”参数?我不知道。我认为它会像一个变量一样。但话又说回来,如果我这样做dict_param["apple"] = "banana"它会在我调用change_dict(my_file_path, my_dict)并打印它时起作用。为什么会这样?
标签: python json file dictionary