Python:嵌套for循环,提供不需要的输出

Python:嵌套for循环,提供不需要的输出,python,Python,理想情况下,上述代码应给出如下输出: _ax = ["Tim","Tom","Mat"] _ay = [12,15,11] _series = "[" for _x in _ax: _series = _series + '{"name": "%s"' % _x + ', "data": [' for _y in _ay: _series = _series + str(_y) + "," _series = str(_series) + "]}]" _ser

理想情况下,上述代码应给出如下输出:

_ax = ["Tim","Tom","Mat"]
_ay = [12,15,11]
_series = "["

for _x in _ax:
    _series = _series + '{"name": "%s"' % _x + ', "data": ['
    for _y in _ay:
        _series = _series + str(_y) + ","

_series = str(_series) + "]}]"
_series = str(_series).replace(",{","]},{").replace(",]","]")
然而,结果如下:

series: [{
        "name": "Tim",
        "data": [12]
    }, {
        "name": "Tom",
        data: [15]
    }, {
        "name": "Mat",
        "data": [11]
    }]
我确信这与for循环有关。最好的方法是什么? PS:这只是实际代码的一个表示,它要大得多,复杂得多

试试这个:

  series: [{
        "name": "Tim",
        "data": [12,15,11]
    }, {
        "name": "Tom",
        data: [12,15,11]
    }, {
        "name": "Mat",
        "data": [12,15,11]
    }]
有关更多详细信息,请参阅


希望这能有所帮助。

您的代码正按照您的要求执行:

_ax = ["Tim","Tom","Mat"]
_ay = [12,15,11]
_series = '[ ' + ', '.join([ '{ "name": "%s", "data": [%d] }' % z for z in zip(_ax, _ay) ]) + ' ]'
第二种方法是简单地在y中转储所有元素。它相当于
“,”.join(map(str,_y)
,它创建一个字符串,其中
_y
中的元素作为分隔列表

如注释中所述,如果要迭代
\ux
\uy
的每个元素,应使用
zip
如下:

for _x in _ax:
    _series = _series + '{"name": "%s"' % _x + ', "age": ['
    for _y in _ay:
        _series = _series + str(_y) + ","

您应该使用嵌套for循环,而不是使用。目前,它在每次迭代
\ux
时都会迭代每个
\y
,我看您喜欢下划线,lolIn您尝试序列化数据的格式是什么?您可以使用
json
包或python的
pprint
并避免执行大量手动步骤.谢谢你,先生:)这太神奇了,只要一行代码就可以避免两个循环。我将详细阅读文档。
for name, data in zip(_x, _y):
    _series += repr({"name": name, "data": [data]})
    _series += ','