Python-将边列表转换为邻接矩阵

Python-将边列表转换为邻接矩阵,python,Python,我有以下格式的数据: user,item,rating 1,1,3 1,2,2 2,1,2 2,4,1 等等 我想把它转换成矩阵形式 所以,输出是这样的 Item--> 1,2,3,4.... user 1 3,2,0,0.... 2 2,0,0,1 ……等等 如何在python中实现这一点 谢谢 印刷品 [3, 2, 0, 0] [2, 0, 0, 1] [0, 0, 0, 0] [0, 0, 0, 0] 与@falsetru不同的方法 您是从文件中读取还是

我有以下格式的数据:

user,item,rating
1,1,3
1,2,2
2,1,2
2,4,1
等等 我想把它转换成矩阵形式

所以,输出是这样的

Item--> 1,2,3,4....
user
1       3,2,0,0....
2       2,0,0,1
……等等

如何在python中实现这一点

谢谢

印刷品

[3, 2, 0, 0]
[2, 0, 0, 1]
[0, 0, 0, 0]
[0, 0, 0, 0]

与@falsetru不同的方法

您是从文件中读取还是写入文件

可能正在使用字典

from collections import defaultdict
valdict=defaultdict(int)
nuser=0
nitem=0
for line in infile:
    eachline=line.strip().split(",")
    valdict[tuple(eachline[0:2])]=eachline[2]
    nuser=max(nuser,eachline[0])
    nitem=max(nitem,eachline[1])

towrite=",".join(range(1,nuser+1))+"\n"
for i in range(1:nuser+1):
    towrite+=str(i)
    for j in range(1:nitem+1):
        towrite+=","+str(valdict[i,j])
    towrite+="\n"

outfile.write(towrite)

回答得好。将矩阵初始化为
matrix=np.zeros((n,n))
可能更有效。@genghiskhan,谢谢您的反馈。我根据你更新了答案代码。
from collections import defaultdict
valdict=defaultdict(int)
nuser=0
nitem=0
for line in infile:
    eachline=line.strip().split(",")
    valdict[tuple(eachline[0:2])]=eachline[2]
    nuser=max(nuser,eachline[0])
    nitem=max(nitem,eachline[1])

towrite=",".join(range(1,nuser+1))+"\n"
for i in range(1:nuser+1):
    towrite+=str(i)
    for j in range(1:nitem+1):
        towrite+=","+str(valdict[i,j])
    towrite+="\n"

outfile.write(towrite)