SortedDict 键:类型错误:“str”和“int”的实例之间不支持“<”

问题描述

请帮助我理解为什么在以下代码中设置 keySortedDict 参数:

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

键函数参数必须作为位置参数提供,并且必须在所有其他参数之前。