python - 使用 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
解决方案
通过应用您的示例
class DotDict(dict):
pass
d = DotDict()
d.first_key = 1
d.second_key = 2
print(d.first_key)
print(d.second_key)
你设置实例参数first_key
和second_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'}
推荐阅读
- google-maps-api-3 - 有没有办法使用 Google Maps API 在路线内查找城市?
- android - 如何通过 adb 命令在 android kitkat 9 上使用 google play music 播放 mp3 文件?
- java - 如何使用java将变量值传递到json文件中
- laravel - “SQLSTATE [HY000] [1045] 用户'root'@'localhost'的访问被拒绝:Laravel 5.3
- amazon-cloudformation - 使用 cloudformation 向 api 添加参数
- linux - 如何在 i3wm 中启动 viber?
- html - 在嵌入的 Google Drive 文件夹中导航
- javascript - Vue 中清除事件的 md-autocomplete
- javascript - 使用 MediaRecorder 以 MP4 格式从网络摄像头录制视频
- angular - 角度日期选择器,没有 ngModel 无法设置默认日期