3 回答
TA贡献1777条经验 获得超10个赞
除了按照pickle其他答案中的建议使用或解析字符串之外,您还可以使用一些“更通用的格式”,例如 JSON:
import json
pair_users = [('a','b'), ('a','c'), ('e','d'), ('e','f')]
with open('pair_users.txt', 'w') as f:
json.dump(pair_users,f)
with open("pair_users.txt") as f:
pair_users = json.load(f)
graph = {}
for k, v in pair_users:
graph.setdefault(v, [])
graph.setdefault(k, []).append(v)
print(graph)
TA贡献1817条经验 获得超14个赞
读取文件时得到的结果只是一个字符串。您不能将字符串迭代为k,v
。您可以通过自己的解析将字符串解析为元组,也可以使用类似pickle
.
用泡菜是:
import pickle
with open('pair_users.pkl', 'wb') as f:
pickle.dump(pair_users, f)
f.close()
with open('pair_users.pkl', 'rb') as f:
pair_tuple = pickle.load(f)
f.close()
print(pair_tuple)
TA贡献1911条经验 获得超7个赞
问题是,读回时
pair_users
是一种类型。str
用于
ast.literal_eval
将 转换string
为tuple
.
from ast import literal_eval
pair_users = open('test.txt', 'r')
pair_users= literal_eval(pair_users.read())
graph = {}
for k, v in pair_users:
graph.setdefault(v, [])
graph.setdefault(k, []).append(v)
graph
[out]:
{'b': [], 'a': ['b', 'c'], 'c': [], 'd': [], 'e': ['d', 'f'], 'f': []}
添加回答
举报