首页 > 解决方案 > 使用 dot(.) 访问字典键

问题描述

我无法使用 dot(.) 访问字典键,但是当我定义一个从 dict 继承的类时,我可以使用 dot(.) 访问它的键。谁能解释一下?

所以,当我运行这段代码时:

d = {'first_key':1, 'second_key':2}
d.first_key

我收到此错误:

'dict' object has no attribute 'first_key'

但是当我运行这个时:

class DotDict(dict):
    pass
d = DotDict()
d.first_key = 1
d.second_key = 2
print(d.first_key)
print(d.second_key)

我明白了:

1
2

标签: python

解决方案


通过应用您的示例

class DotDict(dict):
    pass

d = DotDict()
d.first_key = 1
d.second_key = 2
print(d.first_key)
print(d.second_key)

你设置实例参数first_keysecond_key你的DotDict类,而不是字典本身。如果您只是将字典内容放到屏幕上,您可以看到这一点:

In [5]: d
Out[5]: {}

所以,它只是一个空字典。您可以通过以下常用方式访问字典:

In [1]: d={}

In [2]: d['first'] = 'foo'

In [3]: d['second'] = 'bar'

In [4]: d
Out[4]: {'first': 'foo', 'second': 'bar'}

推荐阅读