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

2024-09-27 21:26:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在“gym”环境的上下文中修改某人的代码,遇到了使用点符号访问字典的情况。 下面的代码片段显示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)

这将提供以下输出:

{'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'

我正在使用Python3。有人能解释一下吗? 谢谢


Tags: columns代码envconfig字典环境timeout符号
2条回答

与JavaScript对象不同,Python dict本机不支持点表示法

请尝试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'
>>> 

披露:我是多西的作者

在python中,不能使用dict.key访问词汇值,需要使用dict[key]

例如:

d = {"foo": 2}
print(d["foo"])
# 2

key = foo
print(d[key])
# 2

print(d.foo)
# AttributeError: 'dict' object has no attribute 'foo'

print(d.key)
# AttributeError: 'dict' object has no attribute 'key'

如果您真的想使用点表示法,您可以使用一个类(顺便说一句,您的config可能是一个类实例):

class MyClass():
    def __init__(self):
        self.foo = "bar"

a = MyClass()
print(a.foo)
# bar

相关问题 更多 >

    热门问题