首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Auto2.setdefault()是如何工作的?它是如何影响我的if语句的?

Auto2.setdefault()是如何工作的?它是如何影响我的if语句的?
EN

Stack Overflow用户
提问于 2022-08-26 18:03:45
回答 1查看 25关注 0票数 -1
代码语言:javascript
复制
dict2 = {'Name': 'sandeep', 'Age': 15, 'Class': '11th', 'school': 'GSBV'}
print(dict2)
if 'collage' in dict2.keys(): print(dict2['collage'])
else: print('no key found in dict')
print(dict2.setdefault('collage', 'this key do not exist in dict'))
if 'collage' in dict2.keys(): print(dict2['collage'])
else: print('no key found in dict')

输出

代码语言:javascript
复制
no key found in dict
this key do not exist in dict
this key do not exist in dict

它不打印

没有在dict中找到密钥

但相反,它打印了

此键在dict中不存在。

在最后一行中,为什么我的程序会有这种行为?

EN

回答 1

Stack Overflow用户

发布于 2022-08-26 23:04:51

setdefault正是它听起来的样子。它为字典中的键设置默认值。给该方法的第一个参数是要设置的key,第二个参数是默认值。因此,当您在已经有键值的setdefault上运行dict时,它就会忽略它。否则,它将将键设置为默认值。

例如:

代码语言:javascript
复制
>>> a = dict()
>>> a.setdefault('key', 'value')
'value'
>>> a.setdefault('key', 'othervalue')
'value'
>>> a
{'key': 'value'}

如您所见,当dict为空时,调用setdefault添加了键、值对并返回值,但当再次调用时,它没有将value更改为othervalue,因为已经存在一个值。

这很方便,特别是在处理可迭代类型时。

例如:

代码语言:javascript
复制
>>> a = {}
>>> for char in ["A", "B", "C"]:
...     for num in [1, 2, 3]:
...         lst = a.setdefault(char, [])
...         lst.append(num)
...
>>> a
{'A': [1, 2, 3], 'B': [1, 2, 3], 'C': [1, 2, 3]}

如果没有setdefault,就需要编写一个条件语句,如果键已经设置或没有设置,则需要在每次迭代中进行检查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73504931

复制
相关文章

相似问题

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