美文网首页
python 字典中的setdefault 用法

python 字典中的setdefault 用法

作者: tafanfly | 来源:发表于2018-09-28 16:24 被阅读0次

    描述

    如果键在字典中,返回这个键所对应的值。如果键不在字典中,向字典中插入这个键,并且以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

    相关文章

      网友评论

          本文标题:python 字典中的setdefault 用法

          本文链接:https://www.haomeiwen.com/subject/vkepoftx.html