快捷搜索: 王者荣耀 脱发

Python进阶之路 setdefault方法

6.3.7 setdefault方法

setdefault方法用于设置key的默认值。该方法接收两个参数,第1个参数表示key,第2个参数表示默认值。如果key在字典中不存在,那么setdefault方法会向字典中添加这个key,并用第2个参数作为key的值。该方法会返回这个默认值。如果未指定第2个参数,那么key的默认值是None。如果字典中已经存在这个key,setdefault不会修改key原来的值,而且该方法会返回key原来的值。

[例 6.11] 本例演示了如何使用setdefault方法向字典中添加新的key-value对,以及获取原有key的值。

#定义一个空字典
dict = {
          
   }

print(dict.setdefault(name,Bill))
#向字典中添加一个名为name的key,默认值是Bill,输出结果:Bill

print(dict)
#输出结果:{name: Bill}

print(dict.setdefault(name,Mike))
#并没有改变name的值,输出结果:Bill

print(dict)
#输出结果:{name: Bill}

#向字典中添加一个名为age的key,默认值是None,输出结果:None
print(dict.setdefault(age))

print(dict)
#输出结果:{name: Bill, age: None}

输出结果:

Bill
{name: Bill}
Bill
{name: Bill}
None
{name: Bill, age: None}

可以看到,上面的代码中使用setdefault方法第1次设置name时,向字典中添加了一个新的key-value对,而第2次设置name时,字典元素并没有任何变化。而setdefault方法返回了第1次设置name的值(Bill),也就是name原来的值。

可能会有人有这样的疑问:这个setdefault方法不就是向字典中添加一个key-value对吗?这里所谓的默认值(setdefault方法第2个参数)其实就是key的值。与dict[key]=value有什么区别?

其实如果key在字典中不存在,setdefault(key,value)方法与dict[key] = value形式是完全一样的,区别就是当key在字典中存在的情况下。setdefault(key,value)并不会改变原值,而dict[key] = value是会改变原值的。所以setdefault方法主要用于向字典中添加一个key-value对,而不是修改key对应的值。

经验分享 程序员 微信小程序 职场和发展