我是python新手,正在学习不可变和可变的对象(我以前在MATLAB和C的有限编程经验中从未遇到过这种情况)。在
我想知道为什么,如果python中的dict是可变的,那么编辑包含在第二个dict中的dict不会改变第二个dict?在
下面是一个例子,在这个例子中,一个dict(蝙蝠侠)被添加到一个关于超级英雄名字的dict中。当蝙蝠侠后来被改变时,它并没有反映在超级英雄的名字dict中。如果dicts像字符串一样是不可变的,这对我来说是有意义的,但是它们是可变的,那么为什么会发生这种情况呢?在
super_hero_names = {
'Superman' : 'Clark Kent',
'Spiderman' : 'Peter Parker'
}
batman = {'Batman' : 'Bruce'}
super_hero_names.update(batman)
batman['Batman'] = 'Bruce Wayne' # (edited)
print(super_hero_names)
# Output: {'Superman': 'Clark Kent', 'Spiderman': 'Peter Parker', 'Batman': 'Bruce'}
每次创建字典
batman
,实际上是在创建一个字典并将其分配给变量batman
我相信你想做的是:
在这种情况下,输出将是:
^{pr2}$可变名称
代码中的问题是字符串是不可变的:不能将字符串
'Bruce'
修改为'Bruce Wayne'
。你把它换了,参考就不见了。如果使用可变对象作为值,则可以获得所需的结果:你用Ruby写的例子
Ruby和Python通常有非常相似的语法。Ruby字符串是可变的,因此您的代码可以在Ruby中工作,只需很少的修改:
^{pr2}$您可以通过将名称存储在列表中来实现您想要的结果,但是由于额外的间接层,这会使代码更加混乱和效率低下。在
输出
^{pr2}$我们也可以使用
相关问题 更多 >
编程相关推荐