Anonymous 发表于 2022-11-10 09:42:53

python如何自动创建值邻接表?

本帖最后由 匿名 于 2022-11-10 17:00 编辑

1.有邻接表 节点 和 边长 数据的话,如何用python 自动生成 的呢(数据量大的话就不能一个数一个数输入了)?

例:根据下表(ID:节点名。Proximity:邻近节点。Length:节点到邻近点的长度)




生成邻接表
g = {'1': {'2': 2, '3': 3, '4': 4},
   '2': {'4': 3, '6': 2},
   '3': {'5': 3},
   '4': {'6': 1},
   '5': {'4': 4, '6': 2}
   }

wp231957 发表于 2022-11-10 09:48:58

只是创建??还是自动生成

tommyyu 发表于 2022-11-10 09:57:50

>>> g = dict()
>>> g['1'] = {'2':2, '3':1, '4':4}
>>> g['2'] = {'4':3, '6':2}
>>> g['3'] = {'5':3}
>>> g['4'] = {'6':1}
>>> g['5'] = {'4':4, '6':2}
>>> g
{'1': {'2': 2, '3': 1, '4': 4}, '2': {'4': 3, '6': 2}, '3': {'5': 3}, '4': {'6': 1}, '5': {'4': 4, '6': 2}}

施华蔻洗发水 发表于 2022-11-10 10:01:46

wp231957 发表于 2022-11-10 09:48
只是创建??还是自动生成

自动生成

施华蔻洗发水 发表于 2022-11-10 10:03:41

tommyyu 发表于 2022-11-10 09:57


数据量大的话这种就不适用了啊{:5_100:}

tommyyu 发表于 2022-11-10 10:06:30

本帖最后由 tommyyu 于 2022-11-10 10:19 编辑

施华蔻洗发水 发表于 2022-11-10 10:03
数据量大的话这种就不适用了啊

>>> g = dict()
>>> for i in range(1, 6):
      g = dict()

   
>>> g
{'1': {}, '2': {}, '3': {}, '4': {}, '5': {}}

我没看懂你这个邻接矩阵表是怎么表示的,剩下的你可以用 g['1']['2'] = 2 这样赋值

wp231957 发表于 2022-11-10 10:12:13

施华蔻洗发水 发表于 2022-11-10 10:03
数据量大的话这种就不适用了啊

自己找规律填充吧
反正你给的例子我没看到啥规律

施华蔻洗发水 发表于 2022-11-10 10:29:07

wp231957 发表于 2022-11-10 10:12
自己找规律填充吧
反正你给的例子我没看到啥规律

老兄,我把帖子补充了点条件,麻烦再看看

施华蔻洗发水 发表于 2022-11-10 10:37:32

本帖最后由 施华蔻洗发水 于 2022-11-10 10:50 编辑

tommyyu 发表于 2022-11-10 10:06
我没看懂你这个邻接矩阵表是怎么表示的,剩下的你可以用 g['1']['2'] = 2 这样赋值

我又更新了下条件,麻烦老哥再看看吧{:5_102:}

wp231957 发表于 2022-11-10 10:57:17

施华蔻洗发水 发表于 2022-11-10 10:37
我又更新了下条件,麻烦老哥再看看吧

x=[ ,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
   
    ]
s= for k in x]
t=list(set(s))
d={}
for k in t:
    d=s.count(k)
d2={}
for k in d:
    tmp={}
    for z in range(d):
      for m in x:
            if m==k:
                tmp]=m
    d2=tmp
print(d2)

'''
D:\wpp>D:/Python37/python.exe d:/wpp/test1.py
{1: {2: 2, 3: 3, 4: 4}, 2: {4: 3, 6: 2}, 3: {5: 3}, 4: {6: 1}, 5: {4: 4, 6: 2}}
'''

tommyyu 发表于 2022-11-10 10:58:40

代码:points = []
while True:
    x = input()
    if x == '' or x == '\n':
      break
    points.append(x.split())
max_ = max(int(points) for i in range(len(points)))
g = {str(i+1):dict() for i in range(max_)}
for i in range(len(points)):
    g]] = int(points)
print(g)
效果:1 2 2
1 3 3
1 4 4
2 4 3
2 6 2
3 5 3
4 6 1
5 4 4
5 6 2

{'1': {'2': 2, '3': 3, '4': 4}, '2': {'4': 3, '6': 2}, '3': {'5': 3}, '4': {'6': 1}, '5': {'4': 4, '6': 2}}

ZhKQYu 发表于 2022-11-10 16:08:49

施华蔻洗发水 发表于 2022-11-10 10:37
我又更新了下条件,麻烦老哥再看看吧

文件是以什么格式存储着呢,csv还是excle还是xml

1molHF 发表于 2022-11-10 16:12:07

为啥楼主匿名?

施华蔻洗发水 发表于 2022-11-10 16:28:51

ZhKQYu 发表于 2022-11-10 16:08
文件是以什么格式存储着呢,csv还是excle还是xml

excel中的xlsx

zhangjinxuan 发表于 2022-11-10 17:36:36

什么意思??

施华蔻洗发水 发表于 2022-11-10 17:54:09

zhangjinxuan 发表于 2022-11-10 17:36
什么意思??

根据excel表格,生成邻接表

wangyanren 发表于 2022-11-10 19:13:07

只想领个币

lxping 发表于 2022-11-10 19:34:54

打开学习

1molHF 发表于 2022-11-11 07:24:13

学习

hellometa 发表于 2022-11-16 21:48:47

学习
页: [1] 2
查看完整版本: python如何自动创建值邻接表?