我正在尝试使用kwargs创建我的第一个函数,并且在循环时遇到了一些麻烦。

我要传递两个kwarg:滴答声和开始。勾号和开始号都将是字符串或字符串列表。

我想遍历kwarg,使用if elif对其进行分类,并包含正确的字符串和kwarg

当kwarg通过测试时,我想获取该kwarg的值,并将其附加到与它的名称列表匹配的列表中(即壁虱进入壁虱列表)

目前,我将所有kwargs值添加到列表中,而不是我正在处理的kwarg值中。

kwarg和kwarg之间有区别,kwarg对此感到困惑,对此感到抱歉。

def fn1(**kwargs):
    ticks = []
    start = []

    # Iterating over the Python kwargs dictionary

for kwarg in kwargs: # For each kwarg in kwargs
        if "ticks" in kwarg:   #Test if "tick" in kwarg. If yes continue to line below, if not skip the next two lines
            for kwarg in kwargs.values():  #for each i in kwargs values  THIS IS WRONG
                    ticks.append(kwarg)
                    break  # I use this to fix what is wrong

        elif "start" in kwarg:
                for kwarg in kwargs.values(): #Same problem as 5 lines up, and now I do not know how to either skip the first iteration of the loop or fix the original problem
                    start.append(kwarg)

    print(ticks, start)


输入:

fn1(ticks= ["IBM", "AAPL"], start= "2")

输出:

[['IBM', 'AAPL']] [['IBM', 'AAPL'], '2']

所需输出:

[['IBM', 'AAPL']] ['2']

最佳答案

不确定源代码中的逻辑,但是我做了一个可行的解决方案,返回了所需的输出。

def fn1(**kwargs):
    ticks = []
    start = []

    for kwarg, values in kwargs.items():  # For every kwarg in kwargs
        if kwarg == "ticks":
            ticks.append(values)

        elif kwarg == "start":
            start.append(values)

    print(ticks, start)


fn1(ticks=["IBM", "AAPL"], start="2")

输出
 # python test123.py
[['IBM', 'AAPL']] ['2']

在输出中,我看到您想将传递的kwarg值添加到数组中,但是在源代码中您正在对其进行迭代。不确定您到底在寻找什么,所以我已经通过获取所需的输出来完成它:)

10-08 04:41