在我的练习中,我必须使用**kwargs
按字母顺序打印在我的函数中输入的参数。
以下是我现在所拥有的:
def afficher(**kwargs):
if kwargs is not None:
for i in kwargs:
print (i)
afficher(helpme=7,plz=10)
返回:
plz
helpme
我担心的是:
我希望他们返回:
helpme = 7
plz = 10
提前致谢!
答案 0 :(得分:0)
普通词典没有排序,因为它们的键经过哈希处理并最终存储起来。
在您的情况下,您可以扫描kwargs
词典
for i in sorted(kwargs):
所以代码变成了
def afficher(**kwargs):
for i in sorted(kwargs):
print ('{}={}'.format(i,kwargs[i]))
afficher(helpme=7,plz=10)
总是产生的
helpme=7
plz=10
注意:正如您所看到的,我删除了if
,我认为您插入了kwargs
以检查是否有任何关键字参数传递给该函数。
在这种情况下,{}
将是一个空字典None
,而不是server {
listen 80;
location / {
include proxy_params;
proxy_pass http://unix:/tmp/flasky.sock;
}
,因此无需阻止迭代。
答案 1 :(得分:0)
当您将**something
作为函数参数时,函数体something
内部将dict
将关键字映射到其值。
要遍历已排序的键,您将执行以下操作:
def afficher(**kwargs):
for k,v in sorted(kwargs.items()):
print '{}={}'.format(k,v)
请注意,如果没有传递关键字参数,kwargs={}
和kwards.items()=[]
。 for
循环将立即退出,因此没有理由进行检查。另外,由于if kwargs is None
不是{}
,因此您无法使用None
进行检查。您可以使用{}
进行检查。