我正在尝试使用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值添加到数组中,但是在源代码中您正在对其进行迭代。不确定您到底在寻找什么,所以我已经通过获取所需的输出来完成它:)