在 python 中使用 .txt 文件创建字典

我有一个配对列表,就像pair_users = [('a','b'), ('a','c'), ('e','d'), ('e','f')]我保存此列表时使用的代码一样:


with open('pair_users.txt', 'w') as f:

  f.write(','.join('%s' % (x,) for x in pair_users))

然后,当我想在另一个笔记本中使用它来创建一个如下所示的字典时{'a': ['b', 'c'], 'b': [], 'c': [], 'd': [], 'e': ['d', 'f'], 'f': []}


为了创建该字典,我使用以下代码:


graph = {}

for k, v in pair_users:

    graph.setdefault(v, [])

    graph.setdefault(k, []).append(v)


graph

但我的问题是,当我打开保存的文件后运行图形代码时,pair_users = open('/content/pair_users.txt', 'r')得到的结果是一个空字典{}。


这是我打开文件时的输出

http://img3.mukewang.com/64ad12960001669903990096.jpg

当我使用代码创建图表而不将列表保存为 txt 文件时,我得到了正确的答案,我的问题是当我保存它然后打开它时。

例如,它在这里工作:

http://img2.mukewang.com/64ad12a10001f48605300198.jpg


当年话下
浏览 176回答 3
3回答

不负相思意

除了按照pickle其他答案中的建议使用或解析字符串之外,您还可以使用一些“更通用的格式”,例如 JSON:import jsonpair_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)

大话西游666

读取文件时得到的结果只是一个字符串。您不能将字符串迭代为k,v。您可以通过自己的解析将字符串解析为元组,也可以使用类似pickle.用泡菜是:import picklewith 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)

Smart猫小萌

问题是,读回时pair_users是一种类型。str用于ast.literal_eval将 转换string为tuple.from ast import literal_evalpair_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': []}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python