鱼C论坛

 找回密码
 立即注册
查看: 2309|回复: 4

[已解决]关于零基础入门学习python,第26讲的第4题的疑问

[复制链接]
发表于 2022-8-4 15:39:52 | 显示全部楼层 |阅读模式
40鱼币
本帖最后由 易改乌江水 于 2022-8-4 15:48 编辑

1659598237712.png
求助大佬
python的dict1.fromkey()是不是只是返回值是根据fromkey生成的,但是前面的dict1是不受改变的。
如果是这样的话,那么小甲鱼老师的课后习题第六题就有问题了。
dict1一开始不知道是什么,也没有做出过改变,要改变应该是这样才是吧
dict1 = dict1.fromkeys((1,2,3),("one","two","three"))
dict1 = dict1 = fromkeys((1,3),"数字")
我的实验应该是没错的(如图),是python改变了这个函数的用法吗?
最佳答案
2022-8-4 15:39:53
本帖最后由 抬头吧奔跑吧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,所以看起来就像是直接无情覆盖了字典。
个人见解哈。。
-----
>>> dict1 = dict1.fromkeys((1,3),'数字')
>>> dict1
{1: '数字', 3: '数字'}
>>> id(dict1)
1639757450112
>>> dict1[1]='阿拉蕾'
>>> 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
>>> 刚刚试了一下,好像证明了自己的想法
1659598739545.png

最佳答案

查看完整内容

你是对的,题目答案应该是有问题的。 应该是 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')},并将指向它的地址赋给了dic ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-4 15:39:53 | 显示全部楼层    本楼为最佳答案   
本帖最后由 抬头吧奔跑吧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,所以看起来就像是直接无情覆盖了字典。
个人见解哈。。
-----
>>> dict1 = dict1.fromkeys((1,3),'数字')
>>> dict1
{1: '数字', 3: '数字'}
>>> id(dict1)
1639757450112
>>> dict1[1]='阿拉蕾'
>>> 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
>>> 刚刚试了一下,好像证明了自己的想法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-4 15:53:37 | 显示全部楼层
本帖最后由 tommyyu 于 2022-8-4 15:56 编辑

可能是这道题默认dict1是空字典
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-8-4 21:05:24 | 显示全部楼层
tommyyu 发表于 2022-8-4 15:53
可能是这道题默认dict1是空字典

只是,空字典在调用这个方法以后依然不会影响到原来的字典
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-4 22:47:18 | 显示全部楼层
你说的对,我研究了一下,这个fromkeys既可以是有dict类直接调用,也可以有dict对象调用,应该是个构造dict的静态类方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 06:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表