我有一个看起来像这样的文本文件:
0 1
0 2
0 3
2 3
3 4
4 1
.. ..
我想把它变成一个像这样的字典
graph = { "0" : ["1", "2", "3"],
"1" : ["4", "0"],
"2" : ["0", "1", "3"],
"3" : ["0", "2", "4"],
"4" : ["1", "3"]
}
文件文本列表是图表的边缘列表。我需要在不使用任何包的情况下制作图表。我的最终目标是计算直径和聚类系数。但是,在开始之前我需要创建图表。
到目前为止,我的尝试是:
d = {}
with open("/Volumes/City_University/data_mining/Ecoli.txt") as f:
for line in f:
(key, val) = line.split()
d[int(key)] = val
for x in d:
print (x)
结果:
471
472
474
475
476
477
478
479
480
481
483
484
485
486
487
由于
答案 0 :(得分:1)
d = {}
with open("/Volumes/City_University/data_mining/Ecoli.txt") as f:
for line in f:
(key, val) = line.split()
if key in d:
d[key].append(val)
else:
d[key] = [val]
for x, v in d.items():
print x, v
说明:
只需创建d
列表的值,然后附加到列表中。
答案 1 :(得分:1)
作为另一种可能的选择,您也可以在此处使用defaultdict
:
from collections import defaultdict
d = defaultdict(list)
with open("/Volumes/City_University/data_mining/Ecoli.txt") as f:
for line in f:
key, val = line.split()
d[key].append(val)
for k, v in d.items():
print(k, v)
这使您无需检查某个密钥是否已在d
中,并且还可以为您节省几行。
答案 2 :(得分:0)
试试这个:
d = {}
with open("/Volumes/City_University/data_mining/Ecoli.txt") as f:
for line in f:
(key, val) = line.split()
if key in d:
d[key].append(val)
else:
d[key] = [val]
for x in d:
print x,d[x]
如果在字典中找到了密钥,它将附加值,否则创建一个新对
答案 3 :(得分:0)
import numpy as np
file_name='text_file.txt'
key_column=0
dat=np.genfromtxt(file_name,dtype=str)
d={i:[] for i in np.unique(dat[:,key_column])}
for row in dat:
for key in d.keys():
if row[key_column]==key :d[key].append(row[1])
print d