使用点(.)访问字典键

2024-04-29 02:45:57 发布

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

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

所以,当我运行代码时:

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

我得到这个错误:

^{pr2}$

但当我运行这个:

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

我明白了:

1
2

Tags: key代码字典定义错误passdotdict
3条回答

在第一种情况下,您正在创建属于dictionary对象的键和值。而在第二个类中,您正在创建一个与继承的字典父类无关的类的属性。在

用你的例子

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类,而不是字典本身。如果您将字典内容显示在屏幕上,您可以看到:

^{pr2}$

所以,它只是一个空的dict。你可以用普通的方法访问字典:

In [1]: d={}

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

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

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

如果要访问dict元素,则需要通过keys进行访问。在

d['first_key']

输出:

^{pr2}$

如果要使用(.)访问,请使用get。在

使用get可以获得所需的值

d = {'first_key':1, 'second_key':2}
print(d.get('first_key'))

输出:

^{pr2}$

对于class,您正在访问class的属性。所以您必须使用(。)

相关问题 更多 >