关于零基础入门学习python,第26讲的第4题的疑问
本帖最后由 易改乌江水 于 2022-8-4 15:48 编辑求助大佬
python的dict1.fromkey()是不是只是返回值是根据fromkey生成的,但是前面的dict1是不受改变的。
如果是这样的话,那么小甲鱼老师的课后习题第六题就有问题了。
dict1一开始不知道是什么,也没有做出过改变,要改变应该是这样才是吧
dict1 = dict1.fromkeys((1,2,3),("one","two","three"))
dict1 = dict1 = fromkeys((1,3),"数字")
我的实验应该是没错的(如图),是python改变了这个函数的用法吗? 本帖最后由 抬头吧奔跑吧Q 于 2022-8-4 22:57 编辑
你是对的,题目答案应该是有问题的。
应该是
1.dict1 = dict1.fromkeys((1,2,3),('o','t','th'))
2.dict1 = dict1.fromkeys((1,3),'数字')
这样子才是体现出 小甲鱼老师的目的,即fromkeys方法是直接创建新的字典,并不是直接修改字典的值。
也少了第一步,即dict1初始应指向空字典。
上面的1.是利用fromkeys方法创建了一个字典{1: ('o', 't', 'th'), 2: ('o', 't', 'th'), 3: ('o', 't', 'th')},并将指向它的地址赋给了dict1
然后2的时候,同样是利用fromkeys方法创建了另外一个字典{1: '数字', 3: '数字'},并将指向它的地址再赋给了dict1,也就是取代了1,所以看起来就像是直接无情覆盖了字典。
个人见解哈。。{:10_245:}
-----
>>> dict1 = dict1.fromkeys((1,3),'数字')
>>> dict1
{1: '数字', 3: '数字'}
>>> id(dict1)
1639757450112
>>> dict1='阿拉蕾'
>>> dict1
{1: '阿拉蕾', 3: '数字'}
>>> id(dict1)
1639757450112
>>> dict1 = dict1.fromkeys((1,2,3),('o','t','th'))
>>> dict1
{1: ('o', 't', 'th'), 2: ('o', 't', 'th'), 3: ('o', 't', 'th')}
>>> id(dict1)
1639756529344
>>> 刚刚试了一下,好像证明了自己的想法 本帖最后由 tommyyu 于 2022-8-4 15:56 编辑
可能是这道题默认dict1是空字典 tommyyu 发表于 2022-8-4 15:53
可能是这道题默认dict1是空字典
只是,空字典在调用这个方法以后依然不会影响到原来的字典 你说的对,我研究了一下,这个fromkeys既可以是有dict类直接调用,也可以有dict对象调用,应该是个构造dict的静态类方法。
页:
[1]