函数'hasattr()'不能按我在Python中预期的那样工作
我有以下代码:
#!/usr/bin/python
import re
import os
import sys
results=[{'data': {}, 'name': 'site1'}, {'data': {u'Brazil': '5/1', u'Panama': '2000/1'}, 'name': 'site2'}]
print results[1]
if hasattr(results[1]['data'], u'Brazil'):
print 'has'
else:
print 'hasn\'t'
当我运行它时,它会给我输出:
hasn't
。我不知道如何检查该属性是否存在。
我尝试在
u
之前删除Brazil
,但是它不起作用。怎么解决呢?
最佳答案
hasattr(..)
检查对象是否具有具有给定名称的属性。但是,正如条件正确说明的那样,没有somedict.Brazil
。
您可以使用in
检查字典中键的成员资格,例如:
if u'Brazil' in results[1]['data']:
print 'has'
else:
print 'hasn\'t'
请注意,这仅检查字典中是否存在与给定键(
u'Brazil'
)相等的键,它不检查值,对于值,例如可以使用'5/1' in results[1]['data'].values()
。请注意,搜索键通常在O(1)中完成,而搜索值将在O(n)中运行。