|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
4. 请目测下边代码执行后,字典dict1的内容是什么?
1. >>> dict1.fromkeys((1, 2, 3), ('one', 'two', 'three'))
2. >>> dict1.fromkeys((1, 3), '数字')
答:执行完成后,字典dict1的内容是:{1: '数字', 3: '数字'}
这里要注意的是,fromkeys方法是直接创建一个新的字典,不要试图使用它来修改一个原有的字典,因为它会直接无情的用把整个字典给覆盖掉。
以上是老师的答案,我自己试验了一下:
>>> dict1={}
>>> dict1.fromkeys((1, 2, 3), ('one', 'two', 'three'))
{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}
>>> dict1.fromkeys((1, 3), '数字')
{1: '数字', 3: '数字'}
>>> dict1
{}
怎么感觉老师的答案错了?
本帖最后由 Twilight6 于 2020-11-27 22:14 编辑
甲鱼哥的意思是,如果先执行 dict1.fromkeys((1, 2, 3), ('one', 'two', 'three'))
然后在执行 dict1.fromkeys((1, 3), '数字') , 执行该代码后的内容是什么
如果 fromkeys 方法不是直接创建一个新的字典,而是在原字典上进行修改,那么第一次执行第一个代码时候结果为:1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}
那么第二次执行后代码一个是在原 1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')} 字典上进行改变的
显然,我们运行后会发现并不会,得到的结果是:{1: '数字', 3: '数字'},并不被第一行代码的执行所影响第二行代码的结果
所以得到答案的结论:fromkeys方法是直接创建一个新的字典,不要试图使用它来修改一个原有的字典,因为它会直接无情的用把整个字典给覆盖掉。
|
|