Python: 如何从 for 循环中 return 数据?
Python: How to return data from a for loop?
我的目标是使用 Dash 创建一个实时图表,显示批处理作业执行重复性任务所需的时间。该图将从批处理作业的日志文件中获取数据,它会在其中查找一些特定的单词。
问题是当我想在图表中显示数据时,它只显示第一个值,而不显示后面的值。
我宁愿将它放在两个单独的函数中,但由于我在处理图表时遇到了问题,所以我现在选择将它放在同一个函数中。
def update_graph():
specific_word = "help"
for i,line in enumerate(lines):
if specific_word in line:
X.append(int(count))
Y.append(int(time))
data = go.Scatter(
x = list(X),
y = list(Y),
name = 'Scatter',
mode = 'lines+markers'
)
return {'data':[data],
'layout': go.Layout(xaxis = dict(range=[min(X), max(X)]),
yaxis = dict(range=[min(Y), max(Y)]))}
我得到的结果只是日志文件中的第一个值,而不是以下值。
当我用 print(data) 替换 return 行并在终端中执行函数时,我得到了我正在寻找的结果。
提前致谢!
问题是 python 在 return 输入第一个值后退出函数。
您可以将要查看的所有值添加到列表中,然后 return 改为:
def update_graph():
specific_word = "help"
output = [] # the list output will store all the data
for i,line in enumerate(lines):
if specific_word in line:
X.append(int(count))
Y.append(int(time))
data = go.Scatter(
x = list(X),
y = list(Y),
name = 'Scatter',
mode = 'lines+markers'
)
output.append({'data':[data], #add the values to the list
'layout': go.Layout(xaxis = dict(range=[min(X), max(X)]),
yaxis = dict(range=[min(Y), max(Y)]))})
return output
所以你会得到一个列表作为 return 值。
您可以遍历列表以获取您想要的任何元素:
thelist = update_graph()
for item in thelist:
print(item)
#do whatever you want with the item here
A return 语句从 loop.So 中断,这不允许 for 循环继续执行。
要解决此问题,您可以将数据存储在 for 循环内,并将 return 语句放在函数外。
你可以试试这个 -
array_name.append( {'data':[data],
'layout': go.Layout(xaxis = dict(range=[min(X), max(X)]),
yaxis = dict(range=[min(Y), max(Y)]))})
我的目标是使用 Dash 创建一个实时图表,显示批处理作业执行重复性任务所需的时间。该图将从批处理作业的日志文件中获取数据,它会在其中查找一些特定的单词。
问题是当我想在图表中显示数据时,它只显示第一个值,而不显示后面的值。
我宁愿将它放在两个单独的函数中,但由于我在处理图表时遇到了问题,所以我现在选择将它放在同一个函数中。
def update_graph():
specific_word = "help"
for i,line in enumerate(lines):
if specific_word in line:
X.append(int(count))
Y.append(int(time))
data = go.Scatter(
x = list(X),
y = list(Y),
name = 'Scatter',
mode = 'lines+markers'
)
return {'data':[data],
'layout': go.Layout(xaxis = dict(range=[min(X), max(X)]),
yaxis = dict(range=[min(Y), max(Y)]))}
我得到的结果只是日志文件中的第一个值,而不是以下值。
当我用 print(data) 替换 return 行并在终端中执行函数时,我得到了我正在寻找的结果。
提前致谢!
问题是 python 在 return 输入第一个值后退出函数。
您可以将要查看的所有值添加到列表中,然后 return 改为:
def update_graph():
specific_word = "help"
output = [] # the list output will store all the data
for i,line in enumerate(lines):
if specific_word in line:
X.append(int(count))
Y.append(int(time))
data = go.Scatter(
x = list(X),
y = list(Y),
name = 'Scatter',
mode = 'lines+markers'
)
output.append({'data':[data], #add the values to the list
'layout': go.Layout(xaxis = dict(range=[min(X), max(X)]),
yaxis = dict(range=[min(Y), max(Y)]))})
return output
所以你会得到一个列表作为 return 值。
您可以遍历列表以获取您想要的任何元素:
thelist = update_graph()
for item in thelist:
print(item)
#do whatever you want with the item here
A return 语句从 loop.So 中断,这不允许 for 循环继续执行。 要解决此问题,您可以将数据存储在 for 循环内,并将 return 语句放在函数外。
你可以试试这个 -
array_name.append( {'data':[data],
'layout': go.Layout(xaxis = dict(range=[min(X), max(X)]),
yaxis = dict(range=[min(Y), max(Y)]))})