函数“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。
我不明白如何检查属性是否存在。
我试图在 Brazil 之前删除 u 但它不起作用。
如何解决?
请您参考如下方法:
hasattr(..) 检查对象是否具有具有给定名称的属性。但是正如条件所说的那样,没有 somedict.Brazil。
您可以使用 in 检查字典中key 的成员资格,例如:
if <b>u'Brazil' in results[1]['data']</b>:
print 'has'
else:
print 'hasn\'t'
请注意,这只会检查字典中是否存在与给定键 (u'Brazil') 相同的 key,它不会检查值,对于值,您可以在结果 [1]['data'].values() 中使用 '5/1'。请注意,搜索键通常在O(1) 内完成,而搜索值将在O(n) 内运行。
