美文网首页
python3 高效使用Python字典、列表

python3 高效使用Python字典、列表

作者: liudongdong | 来源:发表于2019-05-08 10:49 被阅读0次
    1. in关键字检查key是否存在
    if 'name' in d:
        pass
    
    1. get获取字典中的值
    print(d.get("name", "default"))
    
    1. setdefault为字典中不存在的key设置缺省值
    data = [
            ("animal", "bear"),
            ("animal", "duck"),
            ("plant", "cactus"),
            ("vehicle", "speed boat"),
            ("vehicle", "school bus")
        ]
    groups = {}
    for (key, value) in data:
        groups.setdefault(key, []).append(value)
    
    1. defaultdict初始化字典对象
    from collections import defaultdict
    
    groups = defaultdict(list)
    for (key, value) in data:
        # 当key不存在于字典中时,list函数将被调用并返回一个空列表赋值给d[key]
        groups[key].append(value)
    
    1. fromkeys将列表转换成字典
    keys = {'a', 'e', 'i', 'o', 'u' }
    value = []
    d = dict.fromkeys(keys, value)
    print(d)
    
    1. 用字典实现switch ... case语句
    data = {
        0: "zero",
        1: "one",
        2: "two",
    }
    data.get(arg, "nothing")
    
    1. 使用iteritems迭代字典中的元素
    d = {
        0: "zero",
        1: "one",
        2: "two",
    }
    for k, v in d.items():
        print(k, v)
    
    1. 使用字典推导式
    numbers = [1, 2, 3]
    d = {number: number * 2 for number in numbers}
    
    1. list 操作
    # deque 是一个双向队列的数据结构,删除元素和插入元素会很快
    from collections import deque
    names = deque(['raymond', 'rachel', 'matthew', 'roger',
                   'betty', 'melissa', 'judith', 'charlie'])
    names.popleft()
    names.appendleft('mark')
    
    1. list 深拷贝
    arr = list()
    # 模块
    from copy import deepcopy
    c_arr = deepcopy(arr)
    # 切片
    b_arr = arr[:]
    
    1. dict 生成
    def key_value_gen(k):
       yield chr(k+65)
       yield chr((k+13)%26+65)
    d = dict(map(key_value_gen, range(26)))
    
    1. iter()可接收callable参数
    def random_num():
        return randint(0,10)
    # iter第一个参数必须是可调用的对象,用于不断调用,产出各个值
    # 第二个值是哨符,这是个标记值,当可调用的对象返回这个值时, 触发迭代器抛出StopIteration异常,而不产出哨符
    num = iter(random_num, 0)
    for i in num:
        print(i)
    
    1. 动态地创建新类型
    # type的第一个参数就是类名,第二个参数是继承的父类,第三个参数是类的属性
    >>> NewType = type("NewType", (object,), {"x": "hello"})
    >>> n = NewType()
    >>> n.x
    "hello"
    
    1. 字典的get()和setdefault()方法
    d = {'key':123}
    # 使用的d.get('key'),key不存在时它返回的是None,可用第二个参数0取代返回的None
    v = sum.get('<key_name>', 0)
    # 如果字典中存在key,那么就直接返回d[key],否则设置d[key]=value
    # 先查询键名,如存在就返回其值,否则直接给其键名赋值
    v = d.setdefault('<key_name>',456)
    
    1. collections.Counterdict的子类,用来统计可哈稀对象
    >>> cnt = Counter('helloworld')
    >>> cnt
    Counter({'l': 3, 'o': 2, 'e': 1, 'd': 1, 'h': 1, 'r': 1, 'w': 1})
    >>> cnt['l']
    3
    >>> cnt['x'] = 10
    >>> cnt.get('y')
    

    相关文章

      网友评论

          本文标题:python3 高效使用Python字典、列表

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