有没有一种可行的pythonic方法可以通过forloops获得输出
我需要打印那些用for循环beyond打印出来的上半部分中创建的值对,以便在程序增长时动态添加一些新变量 打印到cli应该如下所示有没有一种可行的pythonic方法可以通过forloops获得输出,python,for-loop,command-line-interface,Python,For Loop,Command Line Interface,我需要打印那些用for循环beyond打印出来的上半部分中创建的值对,以便在程序增长时动态添加一些新变量 打印到cli应该如下所示 [vargroup] Varname:Varvalue ... [vargroup1] Varname:Varvalue ... 我现在在这里坐了很长时间,尝试了不同的东西,但在大多数情况下,它说了一些关于整数和切片、元组的东西,并且forloop不能处理ListIndex。。。我对python甚至编程都很陌生,我真的不明白解释器想从我这里得到什么。。。现
[vargroup]
Varname:Varvalue
...
[vargroup1]
Varname:Varvalue
...
我现在在这里坐了很长时间,尝试了不同的东西,但在大多数情况下,它说了一些关于整数和切片、元组的东西,并且forloop不能处理ListIndex。。。我对python甚至编程都很陌生,我真的不明白解释器想从我这里得到什么。。。现在我的朋友告诉我你可以帮助我:哦
import configparser
def test():
#defining Arrays for Settingmanipulation
#default group
default_rel = []
default_rel.append('DEFAULT')
#program specific group
#define
program_rel_name = []
program_rel_val = []
program_rel = [program_rel_name, program_rel_val]
program_rel_name.append("")
#example for a vargroup
program_rel_val.append('OPERATIONAL') #Name
program_rel_name.append("FileName")
program_rel_val.append('settings.ini') #inifile Name
program_rel_name.append("WorkDir")
program_rel_val.append('..') #workdir
#data related group
data_rel_name = []
data_rel_val = []
data_rel = [data_rel_name, data_rel_val]
data_rel_name.append("")
data_rel_val.append ('DATA') # Name
data_rel_name.append("aIndex")
data_rel_val.append ('sp500') # aindex
data_rel_name.append("dataSetType")
data_rel_val.append ('jk') # dataSet (joined Closes)
data_rel_name.append("joinData")
data_rel_val.append('True') #mData (join those Closes)
data_rel_name.append("visualizeData")
data_rel_val.append('True') #(v )run Visualizer
#maschine learning related
ml_rel_name = []
ml_rel_val = []
ml_rel = [ml_rel_name, ml_rel_val]
ml_rel_name.append("")
ml_rel_val.append("MaschineLearning") #Name
ml_rel_name.append("runMlPreprocessor")
ml_rel_val.append('True') #run ml preprocessor
inifile = [program_rel, data_rel, ml_rel]
#writing inifile
config = configparser.ConfigParser ()
cinfig ={}
Group=1
ValuePair=3
#output shall be to cli like demonstrated with this print
print(inifile[Group][0][ValuePair] + ":"+ inifile[Group][1][ValuePair])
print()
print()
#by this forloop
for count, Groups in enumerate(inifile):
for counti, ValuePairs in inifile[count]:
print(inifile[count][0][counti] + ": " + inifile[count][1][counti])
test()
在这段代码中,我设计了一个for循环来打印存储在多维数组中的那些值对。。。。现在,4小时后,我试图以param:value格式安排所需的输出,我很难放弃。。。
你知道怎么做吗
由于在该类中创建了数组,因此给出了示例输入。第69行中的输出是一个错误,该错误表示
for counti, ValuePairs in inifile[count][0]: ValueError: not enough values to unpack (expected 2, got 0)
要打印文件,请执行以下操作:
替换:
for count, Groups in enumerate(inifile):
for counti, ValuePairs in inifile[count]:
print(inifile[count][0][counti] + ": " + inifile[count][1][counti])
与
输出
: OPERATIONAL
FileName : settings.ini
WorkDir : ..
: DATA
aIndex : sp500
dataSetType : jk
joinData : True
visualizeData : True
: MaschineLearning
runMlPreprocessor : True
解释
文件内容包括:
[ [['', 'FileName', 'WorkDir'], ['OPERATIONAL', 'settings.ini', '..']],
[ ['', 'aIndex', 'dataSetType', 'joinData', 'visualizeData'],
['DATA', 'sp500', 'jk', 'True', 'True']],
[['', 'runMlPreprocessor'], ['MaschineLearning', 'True']]]
这是一个列表对的列表
外部for循环在列表中循环:
for lst_pair in inifile:
例如,第一个列表对是:
[['', 'FileName', 'WorkDir'], ['OPERATIONAL', 'settings.ini', '..']],
成对的是:
lst_pair[0] = ['', 'FileName', 'WorkDir']
lst_pair[1] = ['OPERATIONAL', 'settings.ini', '..']
我们在lst_对[0]上循环,使用以下方法获得每个项目的索引和值:
for i, item in enumerate(lst_pair[0]):
我们使用lst_对[1][i]将其与第二个列表匹配,这是第二个列表中的第i项(即lst_对[1])
因此,使用lst_pair[1][i]将第一个列表中的每个项目与第二个列表中的项目配对
我们使用以下方法打印这些对:
print('{} : {}'.format(item, lst_pair[1][i]))
要打印文件,请执行以下操作:
替换:
for count, Groups in enumerate(inifile):
for counti, ValuePairs in inifile[count]:
print(inifile[count][0][counti] + ": " + inifile[count][1][counti])
与
输出
: OPERATIONAL
FileName : settings.ini
WorkDir : ..
: DATA
aIndex : sp500
dataSetType : jk
joinData : True
visualizeData : True
: MaschineLearning
runMlPreprocessor : True
解释
文件内容包括:
[ [['', 'FileName', 'WorkDir'], ['OPERATIONAL', 'settings.ini', '..']],
[ ['', 'aIndex', 'dataSetType', 'joinData', 'visualizeData'],
['DATA', 'sp500', 'jk', 'True', 'True']],
[['', 'runMlPreprocessor'], ['MaschineLearning', 'True']]]
这是一个列表对的列表
外部for循环在列表中循环:
for lst_pair in inifile:
例如,第一个列表对是:
[['', 'FileName', 'WorkDir'], ['OPERATIONAL', 'settings.ini', '..']],
成对的是:
lst_pair[0] = ['', 'FileName', 'WorkDir']
lst_pair[1] = ['OPERATIONAL', 'settings.ini', '..']
我们在lst_对[0]上循环,使用以下方法获得每个项目的索引和值:
for i, item in enumerate(lst_pair[0]):
我们使用lst_对[1][i]将其与第二个列表匹配,这是第二个列表中的第i项(即lst_对[1])
因此,使用lst_pair[1][i]将第一个列表中的每个项目与第二个列表中的项目配对
我们使用以下方法打印这些对:
print('{} : {}'.format(item, lst_pair[1][i]))
我认为您使用名称和值的分隔列表太复杂了,现在您必须使用
zip()
创建名称与值的配对
for all_names, all_values in inifile:
for name, value in zip(all_names, all_values):
print('{}: {}'.format(name, value))
使用元组
(名称、值)
我认为您使用名称和值的分隔列表太复杂了,现在您必须使用
zip()
创建名称与值的配对
for all_names, all_values in inifile:
for name, value in zip(all_names, all_values):
print('{}: {}'.format(name, value))
使用元组
(名称、值)
谢谢这是我想要的看起来很棒。一旦我安装了我的新电脑,我会试试这个谢谢你这是我想要的它看起来很棒。一旦我安装了我的新计算机,我将尝试将文件[count][0]中的
设置为单个变量,并使用print()
查看变量中的内容。错误显示您在文件[count][0]
中只有一个值,无法将其分配给两个变量。当您第一次遇到问题时,请始终使用print()
查看变量中的内容。我不明白为什么将名称和值保留在单独的列表中。最好将其保存在字典中-dict[“runMlPreprocessor”]=True
-或至少作为元组列表-即(“runMlPreprocessor”,True)
。在当前版本中,您需要zip(名称、值)
以成对方式获取它。当我现在查看InFile[count]中的值对时,我想您可能忘记了enumerate()
对于counti,enumerate中的值对(InFile[count])
而不是InFile[count中的值对
您可以使用Groups
-用于枚举(组)中的counti、ValuePairs
将ini文件[count][0]
分配给单个变量,并使用print()
查看变量中的内容。错误显示您在文件[count][0]中只有一个值,无法将其分配给两个变量。当您第一次遇到问题时,请始终使用print()
查看变量中的内容。我不明白为什么将名称和值保留在单独的列表中。最好将其保存在字典中-dict[“runMlPreprocessor”]=True
-或至少作为元组列表-即(“runMlPreprocessor”,True)
。在当前版本中,您需要zip(名称、值)
以成对方式获取它。当我现在查看InFile[count]中的值对时,我想您可能忘记了enumerate()
对于counti,enumerate中的值对(InFile[count])
而不是InFile[count中的值对
对于枚举(组)中的counti、ValuePairs,您可以使用组
-