1

函数 '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.
我不明白如何检查该属性是否存在。我之前
尝试删除,但它不起作用。 如何解决?uBrazil

4

2 回答 2

8

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)中运行。

于 2018-02-12T19:08:27.570 回答
3

hasattr属性进行操作,而不是对字典键进行操作-如果您可以使用点符号(如data.Brazil)访问它,hasattr则将返回True,否则将返回False-在这种情况下,它将返回False

改用in

if u'Brazil' in results[1]['data']:
于 2018-02-12T19:10:09.897 回答