2016-06-12 99 views
0

我添加描述here我GDB通用GDB漂亮的打印机,下面一行添加类型的地图使用的打印机:Python字典:unorderable类型的错误

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(): 

如果我删除任一条线,它工作正常。我很疑惑,

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

[UPDATE] 我通过将正则表达式摆脱它:

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

你能否提供更多代码,因为这没有意义。这应该工作,并在我的机器上工作! –

+0

@my_question,如果你有一个工作解决方案,你应该添加它作为答案并接受它。 –

回答

0

我远离它通过将正则表达式:

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

此问题仅出现在Python 3:

sorted功能需要比较两个编译正则表达式这只能在Python 2中工作(我不知道为什么)。

但我不认为sorted调用是必要的,这样就这么走了出来:

for function in pretty_printers_dict: 
    if function.match(typename): 
     return pretty_printers_dict[function](val) 
相关问题