亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

當年話下 2023-07-11 16:27:36
我有一個配對列表,就像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')得到的結果是一個空字典{}。這是我打開文件時的輸出當我使用代碼創建圖表而不將列表保存為 txt 文件時,我得到了正確的答案,我的問題是當我保存它然后打開它時。例如,它在這里工作:
查看完整描述

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)


查看完整回答
反對 回復 2023-07-11
?
大話西游666

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)


查看完整回答
反對 回復 2023-07-11
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

  • 問題是,讀回時pair_users是一種類型。str

  • 用于ast.literal_eval將 轉換stringtuple.

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': []}


查看完整回答
反對 回復 2023-07-11
  • 3 回答
  • 0 關注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號