You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何导入并使用其他文件内已填充的字典?

嘿,我来帮你搞定这个Python字典导入的问题!听起来你是想把从Reddit API获取并填充好的subreddit评分字典复用起来,避免重复调用API浪费请求次数——这个思路太对了,毕竟API调用次数有限,能省则省。

下面给你几个实用的解决方案,你可以根据自己的场景选:

方案1:用pickle序列化保存(Python专属,简单直接)

这是Python自带的序列化工具,能把字典整个变成文件存起来,之后加载回来就是原原本本的字典对象,完全不用重新请求API。

保存字典(在生成字典的文件里执行)

import pickle

# 假设你的字典叫subreddit_scores,已经通过API填充好了键值对
subreddit_scores = {"r/python": 8, "r/learnprogramming": 9, "r/datascience": 7}

# 把字典写入本地文件,后缀用.pkl就行
with open("subreddit_scores.pkl", "wb") as f:
    pickle.dump(subreddit_scores, f)

加载字典(在需要使用的文件里执行)

import pickle

# 从文件里读取字典
with open("subreddit_scores.pkl", "rb") as f:
    subreddit_scores = pickle.load(f)

# 现在就能直接操作这个字典啦
print(subreddit_scores["r/python"])
subreddit_scores["r/webdev"] = 6

小提醒:pickle生成的文件是二进制的,人类读不懂,但胜在速度快、能保留Python对象的所有特性,适合纯Python环境里用。

方案2:用JSON格式保存(通用可读,跨语言友好)

如果想要字典文件是人类能看懂的文本格式,或者以后可能用其他语言处理这份数据,JSON就是更好的选择。只要你的字典里只有字符串、数字、列表这类基础数据(subreddit名称和评分肯定符合),就完全没问题。

保存字典

import json

subreddit_scores = {"r/python": 8, "r/learnprogramming": 9, "r/datascience": 7}

# 写入JSON文件,indent=4让排版更整齐
with open("subreddit_scores.json", "w") as f:
    json.dump(subreddit_scores, f, indent=4)

加载字典

import json

# 读取JSON文件转成字典
with open("subreddit_scores.json", "r") as f:
    subreddit_scores = json.load(f)

# 直接操作字典
print(subreddit_scores)
subreddit_scores["r/machinelearning"] = 8

方案3:直接作为模块导入(适合字典静态定义的情况)

如果你的字典是直接写在某个Python文件里的(不是动态通过API生成的),比如你有个reddit_data.py文件,里面长这样:

# reddit_data.py
subreddit_scores = {"r/python": 8, "r/learnprogramming": 9, "r/datascience": 7}

那在另一个文件里直接导入就行:

from reddit_data import subreddit_scores

# 直接用字典
print(subreddit_scores["r/learnprogramming"])

注意:如果这个字典是通过API请求动态生成的(比如reddit_data.py里有调用Reddit API的代码),那每次导入这个模块时,都会重新跑一遍API请求——这就违背了你减少请求的初衷,这种情况还是用前两种序列化保存的方法更靠谱。

排查导入问题的小Tips

要是你试了上面的方法还是有问题,可以检查这几点:

  • 确保保存的文件和你要导入的文件在同一个文件夹里,或者指定正确的文件路径(比如"./data/subreddit_scores.pkl")
  • 用模块导入时,别给模块起和Python内置模块重名的名字(比如别叫json.py或者pickle.py,会冲突)
  • 如果用JSON,确认字典里没有不能序列化的特殊对象(比如自定义类实例)

内容的提问来源于stack exchange,提问作者Rachel Solomon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:17:31