首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置默认行为中的python setdefault

设置默认行为中的python setdefault
EN

Stack Overflow用户
提问于 2022-01-19 12:02:37
回答 1查看 46关注 0票数 1

我试图了解嵌套setdefault在代码中是如何工作的。我知道基本的setdefault是如何工作的,但是我在找出这样的代码时遇到了问题:

d中没有键,为什么要同时添加键和值?"333“不在d中,所以我们要删除值d.setdefault( "444”,[]) --我们将一个“444”键加上一个值[],并将其插入到"333“键中,该键由第一个setdefault返回并追加(为什么对于这两个新键,我只考虑了"333")

代码语言:javascript
复制
d = {'111': ['aaa', 'bbb'], '222': ['ccc']}
d.setdefault("333", d.setdefault("444",[])).append("ddd") 
{'111': ['aaa', 'bbb'], '222': ['ccc'], '444': ['ddd'], '333': ['ddd']}

首先在d中,"ddd“被附加到现有的"111”键中,但是为什么会有一个新的键"444“呢?

代码语言:javascript
复制
d = {'111': ['aaa', 'bbb'], '222': ['ccc']}
d.setdefault("111", d.setdefault("444",[])).append("ddd") 
{'111': ['aaa', 'bbb', 'ddd'], '222': ['ccc'], '444': []}

第一个和第二个键已经在d中,只有第一个更新了吗?

代码语言:javascript
复制
d = {'111': ['aaa', 'bbb'], '222': ['ccc']}
d.setdefault("111", d.setdefault("222",[])).append("ddd") 
{'111': ['aaa', 'bbb', 'ddd'], '222': ['ccc']}

第二是d,..?

代码语言:javascript
复制
d = {'111': ['aaa', 'bbb'], '222': ['ccc']}
d.setdefault("333", d.setdefault("222",[])).append("ddd") 
{'111': ['aaa', 'bbb'], '222': ['ccc', 'ddd'], '333': ['ccc', 'ddd']} 

谢谢你的解释

EN

回答 1

Stack Overflow用户

发布于 2022-01-19 12:08:28

它的工作方式如下:

代码语言:javascript
复制
>>> d = {'111': ['aaa', 'bbb'], '222': ['ccc']}
>>> first = d.setdefault("444",[])
>>> first
[]
>>> d
{'111': ['aaa', 'bbb'], '222': ['ccc'], '444': []}
>>> second = d.setdefault("333", first)
>>> second
[]
>>> d
{'111': ['aaa', 'bbb'], '222': ['ccc'], '444': [], '333': []}
>>> second.append("ddd")
>>> second
['ddd']
>>> d
{'111': ['aaa', 'bbb'], '222': ['ccc'], '444': ['ddd'], '333': ['ddd']}

这说明清楚了吗?

请注意,firstsecond引用相同的列表。

代码语言:javascript
复制
>>> first is second
True
>>> first.append('test')
>>> first
['ddd', 'test']
>>> second
['ddd', 'test']
>>> d
{'111': ['aaa', 'bbb'], '222': ['ccc'], '444': ['ddd', 'test'], '333': ['ddd', 'test']}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70770250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档