zoukankan      html  css  js  c++  java
  • dict 常用方法

    1、pop方()

    查看SQLAlchemy的create_engine方法时看到

    default_strategy = 'plain'

    strategy = kwargs.pop('strategy', default_strategy)

    这段代码,不是很理解,查了一下手册,原来字典是有pop方法的,

    原型:pop(key[, default])

    说明:If key is in the dictionary, remove it and return its value, else return default. If default is not given and key is not in the dictionary, a KeyError is raised.

    如果key在一个字典中,移除并返回字典值,否则返回默认值,如果没有默认值并且key不在字典中,则抛出KeyError异常

    1 dt = {'e':{'aaa':132},'b':2,'c':332,'d':32,'ee':'gg'}
    2 print dt.pop('f', 'bbbbbb') #因为f不在字典dt中,所以返回默认值bbbbbb
    print dt.pop('e', 'bbbbbb') #e在字典dt中, 返回其字典值{'aaa':132}

    create_engine函数完整代码为:

    1 default_strategy = 'plain'
    2 def create_engine(*args, **kwargs):    
    3      strategy = kwargs.pop('strategy', default_strategy)
    4      strategy = strategies.strategies[strategy]
    5      return strategy.create(*args, **kwargs)

    首先kwargs是一个字典,第3行的意思就是如果strategy在字典kwargs中,且其值为字典,则将其在kwargs中移除,如果strategy不在kwargs中,则返回默认值default_strategy。

    2、setdefault(key, [default])

        如果key在字典中,则返回这个键对应的值,否则插入这个键,并以default作其值,default不设置的情况下默认为None

    3、get(key[, default])

        项目中发现字典没相应的键,引起异常,打算用 res = dt[kId] if kId in dt else None

        后来同事说用get(key, [, default]) 解决,效果更佳。

  • 相关阅读:
    ADO.Net——增、删、改、查
    面向对象——类库五大原则
    面向对象——设计模式和委托
    JS 函数 内置方法和对象
    js 字符串、数组类型 及方法
    复习一下 Python三元运算
    复习一下 列表
    前端 2 CSS 选择器
    前端 1 HTML
    39
  • 原文地址:https://www.cnblogs.com/bjdxy/p/2785688.html
Copyright © 2011-2022 走看看