python词典:unorderable types错误

时间:2016-06-12 20:14:45

标签: python gdb

我正在向我的gdb添加如here所述的通用GDB漂亮打印机,以下行添加了要使用打印机的类型的地图:

pretty_printers_dict[re.compile ('.*Generic.*')] = GenericPrinter

我需要根据我的类型进行调整:

pretty_printers_dict[re.compile ('MyNamespace1.*')] = GenericPrinter
pretty_printers_dict[re.compile ('MyNamespace2.*')] = GenericPrinter

基本上我喜欢将打印机用于我的所有类型。

但是我在gdb中遇到以下错误:

Python Exception <class 'TypeError'> unorderable types: _sre.SRE_Pattern() < _sre.SRE_Pattern(): 
Python Exception <class 'TypeError'> unorderable types: _sre.SRE_Pattern() < _sre.SRE_Pattern(): 

如果我删除任一行,它可以正常工作。我很困惑,

你看到它有什么问题以及如何解决它?

[更新] 我通过组合正则表达式来远离它:

pretty_printers_dict[re.compile ('MyNamespace1.*|MyNamespace2.*')] = GenericPrinter

2 个答案:

答案 0 :(得分:0)

此问题仅发生在python 3中:

sorted函数需要比较两个编译的正则表达式,它们只在python 2中工作(我不知道为什么)。

但我不认为sorted电话是必要的,所以请不要这样做:

for function in pretty_printers_dict:
    if function.match(typename):
        return pretty_printers_dict[function](val)

答案 1 :(得分:0)

我通过组合正则表达式来摆脱它:

add_action( 'init', 'unregister_tags' );

function unregister_tags() {
    unregister_taxonomy_for_object_type( 'post_tag', 'post' );
}