【问题标题】:Python encoding graph to jsonPython 将图编码为 json
【发布时间】:2013-10-03 04:51:52
【问题描述】:

我正在尝试通过遍历包含此数据的图表来创建以下 JSON 文本:

{
"random" : [
    {
        "attr1" : "X",
        "attr2" : "Y"
    },
    {
        "attr1" : "Z",
        "attr2" : "V"
    }
    ]
}

我试过了:

output = ""
for node in graph:
    output += json.JSONEncoder().encode({"random": [{"attr1": graph[node].attr1, "attr2":graph[node].attr2}]})

但这会导致在每个条目之前重复“随机”,如下所示:

{"random": [{"attr1": "X", "attr2": "Y"}]}{"random": [{"attr1": "Z", "attr2": "V"}]}

如何防止“随机:”重复?任何建议表示赞赏,谢谢。

【问题讨论】:

  • 您必须更具体地了解图形等于什么,因为就目前而言,您的代码没有任何意义。 for node in graph: 将循环一次并产生 node = "random"。甚至循环有什么意义?为什么要硬编码属性名称attr1attr2

标签: python json graph encode


【解决方案1】:

你有什么理由连接不同节点的字符串而不是一次转储整个结构?

>>> import json
>>> graph = {
... "random" : [
...     {
...         "attr1" : "X",
...         "attr2" : "Y"
...     },
...     {
...         "attr1" : "Z",
...         "attr2" : "V"
...     }
...     ]
... }
>>> json.dumps(graph)
'{"random": [{"attr2": "Y", "attr1": "X"}, {"attr2": "V", "attr1": "Z"}]}'

首先,它更简单、更快捷。其次,您的连接甚至不会产生有效的 JSON。

【讨论】:

  • 谢谢,对不起,我对 python 很陌生。此外,图表不是那种格式,但我稍微调整了您的代码以循环浏览我的图表并将信息添加到列表中,然后 json.dump 该列表。
【解决方案2】:

我不确定你为什么要循环,但你可以简单地对图形对象进行编码。

import json
graph = { "random": [ { "attr1": "X", "attr2": "Y"}, {"attr1": "Z", "attr2": "V"}]}
output = json.JSONEncoder().encode(graph)
print output
# yields '{"random": [{"attr2": "Y", "attr1": "X"}, {"attr2": "V", "attr1": "Z"}]}'

【讨论】:

    猜你喜欢
    • 2017-10-06
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多