功能';hasattr()';不';在Python中,它不能像我预期的那样工作

功能';hasattr()';不';在Python中,它不能像我预期的那样工作,python,dictionary,hasattr,Python,Dictionary,Hasattr,函数“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'Brazi

函数“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'
当我运行它时,它会给我输出:
还没有

我不知道如何检查该属性是否存在。
我试图在巴西之前删除
u
,但没有成功。
如何解决它?

hasattr(..)检查对象是否具有具有给定名称的属性。但是,正如条件所说,没有
somedict.basicu

您可以使用中的
检查字典中某个键的成员身份,如:

if u'Brazil' in results[1]['data']:
    print 'has'
else:
    print 'hasn\'t'
如果结果[1]['data']中有u'Brazil':
打印“has”
其他:
打印“尚未”
注意,这只检查字典中是否有与给定键相等的键(
u'Brazil'
),它不检查值,例如,对于值,您可以在结果[1]['data'].values()中使用
'5/1'。请注意,搜索键通常在O(1)中完成,而搜索值将在O(n)中运行。

hasattr(…)
检查对象是否具有具有给定名称的属性。但是,正如条件所说,没有
somedict.basicu

您可以使用
中的
检查字典中某个键的成员身份,如:

if u'Brazil' in results[1]['data']:
    print 'has'
else:
    print 'hasn\'t'
如果结果[1]['data']中有u'Brazil':
打印“has”
其他:
打印“尚未”

注意,这只检查字典中是否有与给定键相等的键(
u'Brazil'
),它不检查值,例如,对于值,您可以在结果[1]['data'].values()中使用
'5/1'。请注意,搜索键通常在O(1)中完成,而搜索值将在O(n)中运行。

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

中使用

if u'Brazil' in results[1]['data']:

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

中使用

if u'Brazil' in results[1]['data']:

这不是一个属性,您可以使用结果[1]['data']
中的
“巴西”来检查字典/集合中某个键的成员身份。也许标题应该是“hasattr用于什么?”因为它完全按照预期工作,尽管您的预期可能有所不同。@SethMMorton:edited这不是一个属性,您可以使用结果[1]['data']
中的“巴西”来检查字典/集合中某个键的成员身份。也许标题应该是“hasattr的用途是什么?”因为它完全按照预期工作,尽管您的预期可能有所不同。@SethMMorton:edited