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': []}
添加回答
舉報