我什么时候可以使用点表示法来访问Python中的字典

Ala*_*one 4 python dictionary notation

我正在“健身房”环境的上下文中修改某人的代码,并发现使用点符号来访问字典。下面的代码片段显示gym中的字典可以使用该表示法,但是当我复制它时它会抛出错误。

import gym
env = gym.Env
env = make('connectx', debug=True)
config = env.configuration
print(config)
print(config.timeout)
dct = {'timeout': 5, 'columns': 7, 'rows': 6, 'inarow': 4, 'steps': 1000}
print(dct.timeout)
Run Code Online (Sandbox Code Playgroud)

这提供了以下输出:

{'timeout': 5, 'columns': 7, 'rows': 6, 'inarow': 4, 'steps': 1000}
5

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
   <ipython-input-45-674d59d34c55> in <module>
      6 print(config.timeout)
      7 dct = {'timeout': 5, 'columns': 7, 'rows': 6, 'inarow': 4, 'steps': 1000}
----> 8 print(dct.timeout)

AttributeError: 'dict' object has no attribute 'timeout'
Run Code Online (Sandbox Code Playgroud)

我正在使用 Python 3。有人可以解释一下吗?谢谢

Sum*_*rve 5

与 JavaScript 对象不同,Python 字典本身不支持点表示法。

尝试DotsiAddict或类似的库。以下是 Dotsi 实际运行的快速片段:

>>> import dotsi
>>> 
>>> d = dotsi.Dict({"foo": {"bar": "baz"}})     # Basic
>>> d.foo.bar
'baz'
>>> d.users = [{"id": 0, "name": "Alice"}]      # In list
>>> d.users[0].name
'Alice'
>>> 
Run Code Online (Sandbox Code Playgroud)

披露:我是 Dotsi 的作者。