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 += ','