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]) 解决,效果更佳。

  • 相关阅读:
    MySQL
    权限(二)
    权限(一)
    化栈为队
    栈的最小值
    实现简易版react中createElement和render方法
    12.整数转罗马数字
    call,apply,bind的理解
    8. 字符串转换整数 (atoi)
    172.阶乘后的0
  • 原文地址:https://www.cnblogs.com/bjdxy/p/2785688.html
Copyright © 2011-2022 走看看