Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么时候可以使用点表示法访问Python中的词典_Python_Dictionary_Notation - Fatal编程技术网

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

什么时候可以使用点表示法访问Python中的词典,python,dictionary,notation,Python,Dictionary,Notation,我在“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,

我在“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'
{'timeout':5,'columns':7,'rows':6,'inarow':4,'steps':1000}
5.
---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在里面
6打印(配置超时)
7 dct={'timeout':5,'columns':7,'rows':6,'inarow':4,'steps':1000}
---->8打印(dct超时)
AttributeError:“dict”对象没有属性“timeout”
我正在使用Python3。有人能解释一下吗?
谢谢

在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
可能是一个类实例):


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

试试,或者类似的图书馆。下面是Dotsi的一个快速片段:

导入dotsi >>> >>>d=dotsi.Dict({“foo”:{“bar”:“baz”}})#Basic >>>d.foo.bar “巴兹” >>>d.users=[{“id”:0,“name”:“Alice”}]#在列表中 >>>d.users[0]。名称 “爱丽丝” >>>
披露:我是Dotsi的作者。

dict
无法使用点符号访问值
config
可能不是一个
dict
-使用
type(config)
来了解它是什么。我想你已经非常习惯javascript语法和语义了?你是对的,config是一个谢谢你的功能。我通常使用dict[key]但是我正在修改的代码似乎成功地使用了点表示法,我想了解.cf在我的回答中关于类的部分:您可以在类实例中使用点表示法
class MyClass():
    def __init__(self):
        self.foo = "bar"

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