gpt4 book ai didi

python-3.x - Networkx add_node 似乎忽略解析为字典的属性

转载 作者:行者123 更新时间:2023-12-03 19:44:08 25 4
gpt4 key购买 nike

我很想将社交平台 API 中的数据加载到 networkx 图中以进行一些分析。但是有问题。 add_node函数似乎正在输入 I 通过它,因此没有添加任何属性。

来自 API 的数据
以以下形式出现:

data= {'users': [{'1': {'attrib1': 'some value',
'attrib2': 'some other value',
.... etc},
'2': {'attrib1': 'some val',
'attrib2': 'you get the idea',
... etc},
... etc
}]}

所以那是
dict with one key 'users'
list with one element [0]
a dict of each users with user number as the key
a dict that contains the same id and a load of other attributes

(有点奇怪的结构imo ...)

我已经成功地在 nx.DiGraph 中创建了节点和:
    G = nx.DiGraph()
for u in data['users'][0].values():
G.add_node(str(u['id']),attr_dict=u)

但是当我在 G 中测试节点时(例如 nx.get_node_attibutes(G,'firstName') )似乎没有任何附加到节点的属性。

问题
  • 有什么我做错了吗? u在循环中绝对是一个字典,我已经检查过了。
  • 有没有更明智的方法来做到这一点?也许通过操纵data dict 成不同的结构?
  • 最佳答案

    我的猜测是您在 attr_dict 中打错了字。 .在您第一次尝试时它可能已经运行良好,您只是“测试节点”并没有非常详尽,因此没有意识到您的错字是什么。

    而不是使用 nx.get_node_attibutes(G,'firstName') -- 即检查某个属性是否存在 -- 您可以使用 G.node ,其中列出了图中的所有节点及其属性。

    但是让我们进入正题。交易约add_node是如果你添加一个节点,你可以将属性和它们的值作为关键字参数对传递。以这个来自 add_node 的代码片段为例文档页面:

    G.add_node(3,weight=0.4,UTM=('13S',382871,3972649))

    这里我们添加一个节点,id为 3到图形并给它一个 weight值为 0.4 的属性和一个 UTM以元组为值的属性。如果我们用 G.node 检查它我们看
    >>> G.node
    {3: {'weight': 0.4, 'UTM': ('13S', 382871, 3972649)}}

    每个关键字都添加为 key在节点的属性字典中!
    一切都很顺利。这与我们将属性作为 attr_dict 传递时的结果完全相同。 :
    >>> G.clear()
    >>> G.add_node(3, attr_dict={'weight': 0.4, 'UTM': ('13S',382871,3972649)})
    >>> G.node
    {3: {'weight': 0.4, 'UTM': ('13S', 382871, 3972649)}}

    在您的情况下,我怀疑您在“attr_dict”中打错了字。在这种情况下,networkx 认为这不是实际的 attr_dict关键字您的意思是属性名称。下面是一个例子:
    >>> G.clear()
    >>> G.add_node(3, attr_dict_typo={'weight': 0.4, 'UTM': ('13S',382871,3972649)})
    >>> G.node
    {3: {'attr_dict_typo': {'weight': 0.4, 'UTM': ('13S', 382871, 3972649)}}}

    因此,当您尝试检查属性是否 'firstname' 时与 nx.get_node_attibutes(G,'firstName') 一起存在,该函数查找名为 'firstname' 的键,但只找到 'attr_dict_typo' ,并返回 None .

    请让我知道,如果你有任何问题。

    关于python-3.x - Networkx add_node 似乎忽略解析为字典的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40674597/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com