使用多个字典、Python创建JSON

使用多个字典、Python创建JSON,python,json,dictionary,Python,Json,Dictionary,我有以下代码: >>> import simplejson as json >>> keys = dict([(x, x**3) for x in xrange(1, 3)]) >>> nums = json.dumps(keys, indent=4) >>> print nums { "1": 1, "2": 8 } 但我想创建一个循环,使我的输出如下所示: [ { "1": 1,

我有以下代码:

>>> import simplejson as json
>>> keys = dict([(x, x**3) for x in xrange(1, 3)])
>>> nums = json.dumps(keys, indent=4)
>>> print nums
{
    "1": 1,
    "2": 8
}
但我想创建一个循环,使我的输出如下所示:

[
    {
        "1": 1,
        "2": 8
    },
    {
        "1": 1,
        "2": 8
    },
    {
        "1": 1,
        "2": 8
    }
]
>>> import json
>>> multikeys = []
>>> for i in range(3):
...    multikeys.append(dict([(x, x**3) for x in xrange(1, 3)]))
... 
>>> print json.dumps(multikeys, indent=4)
[
    {
        "1": 1, 
        "2": 8
    }, 
    {
        "1": 1, 
        "2": 8
    }, 
    {
        "1": 1, 
        "2": 8
    }
]

所需的输出不是有效的JSON。我认为您可能想做的是将多个词典附加到一个列表中,如下所示:

[
    {
        "1": 1,
        "2": 8
    },
    {
        "1": 1,
        "2": 8
    },
    {
        "1": 1,
        "2": 8
    }
]
>>> import json
>>> multikeys = []
>>> for i in range(3):
...    multikeys.append(dict([(x, x**3) for x in xrange(1, 3)]))
... 
>>> print json.dumps(multikeys, indent=4)
[
    {
        "1": 1, 
        "2": 8
    }, 
    {
        "1": 1, 
        "2": 8
    }, 
    {
        "1": 1, 
        "2": 8
    }
]

您需要创建一个列表,在转换为JSON之前将所有映射附加到该列表:

output = []
for something in somethingelse:
    output.append(dict([(x, x**3) for x in xrange(1, 3)])
json.dumps(output)

没有道理。你想要的不是一个有效的JSON文档。如何为一个有效的JSON文档创建一个循环?@Serg:我已经编辑了输出,使其成为有效的JSON,前提是你想让它成为一个列表。只需更改为
keys=[dict([(x,x**3)for x in xrange(1,3)]]*3
MAGIC)),非常感谢!