尝试将字典传递到函数中以将其打印出来,但是会引发错误:most_courses()接受0个位置参数,但给出了1个
def most_courses(**diction):
for key, value in diction.items():
print("{} {}".format(key,value))
most_courses({'Andrew Chalkley': ['jQuery Basics', 'Node.js Basics'],'Kenneth Love': ['Python Basics', 'Python Collections']})
我用过** kwargs,但是为什么python无法解压缩字典呢?
答案 0 :(得分:2)
将字典作为参数传递时,您可以按照编写的方式进行操作:
most_courses({'Andrew Chalkley': ...
在这种情况下,most_cources
应该接受“位置”参数。这就是为什么它引发:most_courses() takes 0 positional arguments but 1 was given
。
您给了它1个位置参数,而most_cources
(看起来像是most_courses(**d)
)没有任何要求。.
您应该这样做:
most_courses(**{'Andrew Chalkley': ['jQuery Basics', 'Node.js Basics'],'Kenneth Love': ['Python Basics', 'Python Collections']})
或更改方法的签名:
def most_courses(diction):
for key, value in diction.items():
print("{} {}".format(key,value))
答案 1 :(得分:1)
这里没有理由使用**
。您想传递一个字典并将其作为字典处理。只需使用标准参数即可。
def most_courses(diction):
答案 2 :(得分:1)
在函数定义中用**表示的参数需要使用关键字传递:
def test(**diction):
print(diction)
不带关键字传递的参数:
test(8)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-9-5092d794a50d> in <module> 2 print(diction) 3 ----> 4 test(8) 5 test(test_arg=9) TypeError: test() takes 0 positional arguments but 1 was given
使用任意关键字:
test(test_arg=8)
输出:
{'test_arg': 8}
有用的链接: