簡體   English   中英

Python - 從文本文件到字典的鄰接列表

[英]Python - adjacency list from text file into a dictionary

使用networkx,我可以生成一個代表圖形鄰接列表的文本文件。 我需要將文本文件轉換成字典。 所以關鍵是每行最左邊的數字,它是該行右邊數字的 rest 的值列表。 值列表有時可能為空。 我們可以調用輸入文件test.txt。 謝謝!

例如,這就是我要查找的內容:{1: [], 2: [3,7], 3: [4,7,9], 4: [7,9], 9: []}

這是生成的要轉換的文本文件:

#adjlist.py
# GMT Tue May 26 14:48:55 2020
# 
1
2 3 7
3 4 7 9
4 7 9
7 9
9

使用open() function 讀取文本文件很簡單。 我建議使用.read()方法而不是遍歷打開的文件來讀取行,因為將文件批量讀取到 memory 比從磁盤上的文件中遍歷行快得多。 當然,如果文件小於您的 RAM。 .strip()返回刪除前導和尾隨字符的字符串副本。 .split()使用給定的分隔符拆分,這里我們使用\n將文件拆分為行。

最后,我們遍歷每一行並在該行上調用.split() ,這次按空格分割。 這將返回一個項目列表,其中[0]索引項目將是您的鍵,而 rest ( [1:] ) 將是您的值。

您可以使用collections內置庫中的defaultdict來實現單個字典鍵的多個項目。

from collections import defaultdict

with open("test.txt") as f:
    lines = f.read().strip().split("\n")

d = defaultdict(list)

for line in lines:
    ls = line.split(" ")
    d[ls[0]] = ls[1:]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM