问题描述
请帮助我理解为什么在以下代码中设置 key
的 SortedDict
参数:
from sortedcontainers import SortedDict
SortedDict({1:2,0:1}) # works
SortedDict({1:2,0:1},key=lambda x: x) # TypeError
SortedDict({'a':2,key=lambda x: 1 if isinstance(x,str) else x) # TypeError
给出以下错误:
TypeError: '<' not supported between instances of 'int' and 'str'
如何修复示例? 非常感谢您的帮助!
解决方法
来自文档:http://www.grantjenks.com/docs/sortedcontainers/sorteddict.html
键函数参数必须作为位置参数提供,并且必须在所有其他参数之前。
你的代码应该是这样的:
from sortedcontainers import SortedDict
SortedDict({1:2,0:1})
SortedDict(lambda x: x,{1:2,0:1})
SortedDict(lambda x: 1 if isinstance(x,str) else x,{'a':2,0:1})
,
sortedcontainer
文档说您错误地调用了 SortedDict
构造函数:
http://www.grantjenks.com/docs/sortedcontainers/sorteddict.html
键函数参数必须作为位置参数提供,并且必须在所有其他参数之前。