函数 'hasattr()' 没有像我在 Python 中预期的那样工作
Function 'hasattr()' doesn't work as I expected in Python
函数 '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
检查字典中 键 的成员资格,例如:
if <b>u'Brazil' in results[1]['data']</b>:
print 'has'
else:
print 'hasn\'t'
请注意,这仅检查字典中是否存在等于给定键 (u'Brazil'
) 的 key,它不会检查值,对于值,您可以使用 '5/1' in results[1]['data'].values()
。请注意,搜索 keys 通常在 O(1) 中完成,而搜索值 运行 in O(n).
hasattr
在 属性 上运行,而不是在 字典键 上运行 - 如果您可以使用点符号访问它(如data.Brazil
) 然后 hasattr
将 return True
,否则它将 return False
- 在这种情况下它将 return False
.
改用in
:
if u'Brazil' in results[1]['data']:
函数 '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
检查字典中 键 的成员资格,例如:
if <b>u'Brazil' in results[1]['data']</b>:
print 'has'
else:
print 'hasn\'t'
请注意,这仅检查字典中是否存在等于给定键 (u'Brazil'
) 的 key,它不会检查值,对于值,您可以使用 '5/1' in results[1]['data'].values()
。请注意,搜索 keys 通常在 O(1) 中完成,而搜索值 运行 in O(n).
hasattr
在 属性 上运行,而不是在 字典键 上运行 - 如果您可以使用点符号访问它(如data.Brazil
) 然后 hasattr
将 return True
,否则它将 return False
- 在这种情况下它将 return False
.
改用in
:
if u'Brazil' in results[1]['data']: