如何将文本文件导入为字典python

时间:2014-11-22 13:08:04

标签: python text dictionary graph edges

我有一个看起来像这样的文本文件:

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

由于

4 个答案:

答案 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