Accessing dictionary keys using dot(.)
本问题已经有最佳答案,请猛点这里访问。
我不能用点(.)访问字典键,但是当我定义从dict继承的类时,我可以用点(.)访问它的键。有人能解释一下吗?
所以,当我运行此代码时:
1 2 | d = {'first_key':1, 'second_key':2} d.first_key |
我得到这个错误:
1 | 'dict' object has no attribute 'first_key' |
但当我运行这个时:
1 2 3 4 5 6 7 | class DotDict(dict): pass d = DotDict() d.first_key = 1 d.second_key = 2 print(d.first_key) print(d.second_key) |
我明白这一点:
1 2 | 1 2 |
在第一种情况下,您将创建属于Dictionary对象的键和值。在第二种情况下,您正在创建一个类的属性,该类与您继承的字典父类无关。
通过运用你的例子
1 2 3 4 5 6 7 8 | class DotDict(dict): pass d = DotDict() d.first_key = 1 d.second_key = 2 print(d.first_key) print(d.second_key) |
您将实例参数
1 2 | In [5]: d Out[5]: {} |
因此,它只是一个空的dict。您可以用常见的方式访问字典:
1 2 3 4 5 6 7 8 | In [1]: d={} In [2]: d['first'] = 'foo' In [3]: d['second'] = 'bar' In [4]: d Out[4]: {'first': 'foo', 'second': 'bar'} |
如果要访问
1 | d['first_key'] |
输出:
1 | 1 |
如果要使用(.)访问,请使用
使用
1 2 | d = {'first_key':1, 'second_key':2} print(d.get('first_key')) |
输出:
1 | 1 |
关于