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

08-24 19:40