我有这段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:指定参数解包(参数解包)"
这个错误意味着什么,它实际上是否表明代码中存在错误?
答案 0 :(得分:3)
你的lambda指定接收一个参数:一个元组,它将被解压缩到两个变量k
和v
中。如果这是你打算做的,那就没关系。我相信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)