小编bar*_*oli的帖子

如果某个键不在some_dict中,为什么some_dict ['key'] = somevalue会起作用?

我知道我可以通过这样做在python dict中添加一个新的键/值

some_dict['absent_key'] = somevalue
Run Code Online (Sandbox Code Playgroud)

但我真的不了解内部工作.

我曾经认为字典表现得像C++地图.如果[]操作符不存在,则为给定键创建元素,然后返回对它的引用,以便可以在运算符的同一行中为其赋值=.

但是,C++中的这种行为的结果是,如果我们从映射中查询不存在的键的值,则会为该键创建该元素,并返回值类型的默认值而不是错误.在python中,这会抛出一个KeyError.

所以我不明白的是:如何,因为[]运算符必须=在python 之前进行评估(我认为?),它的行为会有所不同,这取决于结果是读取还是分配了一个值(它不应该在那里知道)表达式评价的要点)?

python评估表达式的顺序有区别吗?或者解释器只是更聪明,因为字典是一个硬编码类型,所以它更准确地知道它的行为,而std :: map是在'库'中,所以编译器可以假设更少?还是其他一些原因?

python dictionary operators

3
推荐指数
1
解决办法
103
查看次数

标签 统计

dictionary ×1

operators ×1

python ×1