python 字典中的setdefault 用法

描述

如果键在字典中,返回这个键所对应的值。如果键不在字典中,向字典中插入这个键,并且以default为这个键的值,并返回 default。default的默认值为None

语法

result = dict.setdefault(key, default=None)

  • key: 查找的键值
  • default: 键不存在时,设置的默认键值
  • result: 键存在返回键值, 否则返回default

实例一, 理解setdefault

In [1]: kwargs = {'name': 'Lilei'}

In [2]: item = kwargs.setdefault('name', 'zhangsan')
#取到对应的键值 item-->Lilei
In [3]: item
Out[3]: 'Lilei'

In [4]: kwargs
Out[4]: {'name': 'Lilei'}

In [5]: new = kwargs.setdefault('info', {})
#没有对应的键 item-->default-->{}
In [6]: new
Out[6]: {}

In [7]: kwargs
Out[7]: {'info': {}, 'name': 'Lilei'}
#向字典中插入info,值为{}
In [8]: new.setdefault('score', '90')
Out[8]: '90'

In [9]: new
Out[9]: {'score': '90'}
#new对应的是kwargs中info的值{}, 然后给它赋值{'score': '90'}
In [10]: kwargs
Out[10]: {'info': {'score': '90'}, 'name': 'Lilei'}

实例二, 发散运用setdefault

info1 = '1.2.3.4.5'
info2 = 'a.b.c.d.f'


def transfer_kwargs(*args):
    kwargs = {}
    for arg in args:
        k, v = map(lambda x: x.strip(), arg.split('.', 1))
        if '.' in v:
            item = kwargs.setdefault(k, {})  # step1
            values = v.split('.')
            for j in values[:-2]:
                item = item.setdefault(j, {})   # step2
            item[values[-2]] = values[-1]     #step3
        else:
            kwargs.update({k: v})
    print kwargs

transfer_kwargs(info1, info2)
{'1': {'2': {'3': {'4': '5'}}}, 'a': {'b': {'c': {'d': 'f'}}}}

跃迁图示

{'1': {}} --> {'1': {'2':{}}} --> {'1': {'2':{'3':{}}}} --> {'1': {'2':{'3':{'4':'5'}}}}
step1 --> step2 --> step2 --> step3

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容