my_dict['backlog_month_done']
出现问题是因为None
.
您可以在 if 中使用额外条件来解决此问题:
my_dict = {'category': 'failure', 'logged_product': 'log_prd1', 'product': 'prd1', 'backlog_month_done': None,'TDC': <__main__.TDC object at 0x010F47D0>}
for attr, value in my_dict.items() :
if value and value.startswith('<__main'):
#removeit
但是,我怀疑这会达到您的预期,因为TDC
in的值my_dict
不是字符串:它是您复制并粘贴的类的实例repr
,因此您可能会收到类似
AttributeError: 'TDC' object has no attribute 'startswith'
您可以通过检查value
is a来防止这种情况发生str
:
for attr, value in my_dict.items() :
if isinstance(value, str) and value.startswith('<__main'):
#removeit
但是,我怀疑那根本不是您想要的。如果你想检查一个值是否是 TDC 的一个实例,你需要TDC
作为参数传递给isinstance
:
for attr, value in my_dict.items() :
if isinstance(value, TDC):
#removeit
或者,如果您确定要删除以“<__main”开头的任何内容(甚至是其代表),则需要确保获得该项目的字符串。在这种情况下,您可能希望使用该repr
函数,因为str
它经常被重载以返回自定义值。
for attr, value in my_dict.items() :
if repr(value).startswith('<__main'):
#removeit