什么是"参数解包" pylint 1.4中的错误?

时间:2014-12-16 00:13:01

标签: python pylint

我有这段python代码:

d = {"a": {}}
d["a"] = sorted(d["a"].iteritems(), key=lambda (k,v,): len(v.get('b')), reverse=True)

当我通过pylint 1.4运行时,我收到警告:  " E:3,48:指定参数解包(参数解包)"

这个错误意味着什么,它实际上是否表明代码中存在错误?

2 个答案:

答案 0 :(得分:3)

你的lambda指定接收一个参数:一个元组,它将被解压缩到两个变量kv中。如果这是你打算做的,那就没关系。我相信Python 3不支持这一点,这可能是pylint警告你的原因。

答案 1 :(得分:1)

迭代一个dictionary-iteritems对象(通过调用它的.next()方法完成)会产生2元组。你的lambda函数有两个参数,但dict-iteritems对象产生的2元组是一个单独的对象。

你可以通过索引到元组来解决这个问题:

d["a"] = sorted(d["a"].iteritems(), key=lambda x: len(x[1].get('b')), reverse=True)