1
我有一個文本文件邊緣的名單列表:圖中從邊緣
0 1
0 2
0 3
1 637
1 754
1 1319
1 1350
1 1463
1 1523
2 637
2 754
2 1319
2 1350
2 1463
2 1523
3 499
3 539
3 595
3 637
3 706
3 1128
3 1194
3 1213
3 1319
.. ...
我需要把它變成像這樣的詞典:
graph = { "a" : ["c"],
"b" : ["c", "e"],
"c" : ["a", "b", "d", "e"],
"d" : ["c"],
"e" : ["c", "b"],
"f" : []
}
我嘗試這樣遠一直是:
import numpy as np
file_name='/Volumes/City_University/data_mining/Ecoli.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)
但是,這不能正常工作,因爲我不會得到一個新的關鍵,當它出現在值中:作爲一個例子 我得到:
'0': ["1", "2", "3"]
'1': ['637', '754', '1319', '1350', '1463', '1523']
在'1'中,「0」丟失。
使其更簡單。如果我有這樣
a b
c d
文本,我應該得到這樣一個結果: 圖= { 「一」: 「B」], 「B」: 「一」], 「C」: 「d」], 「d」: 「C」]}如果你想有一個雙向圖
預先感謝您
線d [行[1]]追加(行[0])給我一個錯誤:當 「754」 出現在在第二列(754' KeyErroe) – Arslan 2014-12-04 13:38:41
我猜測,發生你的數據,但不是第一個。我認爲你可以在np.unique(dat [:,0])+ np.unique(dat [:,1])}'中爲'i做'd = {i:[],但使用defaultdict會更容易。編輯。 – Kevin 2014-12-04 13:44:09