有没有一种可行的pythonic方法可以通过forloops获得输出

有没有一种可行的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甚至编程都很陌生,我真的不明白解释器想从我这里得到什么。。。现

我需要打印那些用for循环beyond打印出来的上半部分中创建的值对,以便在程序增长时动态添加一些新变量

打印到cli应该如下所示

[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,您可以使用
-