You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从节点对及权重列表创建字典的字典数组结构?

如何将节点对权重列表转换为字典数组的字典结构?

你现在的代码生成的是嵌套字典(格式为{节点: {相邻节点: 权重}}),但你想要的是值为字典数组的字典——也就是每个节点对应一个数组,数组里的每个元素是包含邻居节点和权重的独立字典对吧?

修改后的代码

只需要调整defaultdict的类型,并把赋值操作改成列表追加字典的方式即可:

import pandas as pd
import numpy as np
import collections

# 读取数据(和你原来的代码一致)
nets = pd.read_table('data/nodes.txt', header=None)
bb = np.array(nets).tolist()

# 把defaultdict的类型从dict改成list,每个节点对应一个列表
graph = collections.defaultdict(list)

for row in bb:
    # 给第一个节点的列表添加包含邻居和权重的字典
    graph[row[0]].append({"node": row[1], "weight": row[2]})
    # 反向邻居也做同样的操作(保持无向图的特性)
    graph[row[1]].append({"node": row[0], "weight": row[2]})

# 转换成普通字典输出
print(dict(graph))

结构说明

修改后生成的结构会是你想要的样子,示例输出如下:

{
    0: [{"node": 1, "weight": 2}, {"node": 2, "weight": 3}, {"node": 3, "weight": 6}, {"node": 7, "weight": 8}],
    1: [{"node": 0, "weight": 2}, {"node": 2, "weight": 5}, {"node": 4, "weight": 7}],
    2: [{"node": 0, "weight": 3}, {"node": 1, "weight": 5}, {"node": 11, "weight": 5}, {"node": 5, "weight": 4}],
    ...
}

关键修改点

  • 把collections.defaultdict(dict)改为collections.defaultdict(list):因为我们需要每个节点对应一个数组,而非另一个字典。
  • 用append()替代直接键值赋值:每次循环往列表里添加一个新的字典,字典里明确存储node(邻居节点)和weight(权重)两个字段,这样就实现了“字典数组”的结构。

内容的提问来源于stack exchange,提问作者niiwise

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:11:01