zoukankan      html  css  js  c++  java
  • 字典-dict

    1. dict

       字典是Python提供的一种数据类型,用于存放有映射关系的数据,字典相当于两组数据,其中一组是key,是关键数据(程序对字典的操作都是基于key),

       另一组数据是value,可以通过key来进行访问。

       列出一些常用的API:

    dict.clear()                         # 删除字典内所有元素 
    dict.copy()                          # 返回一个字典的浅复制
    dict.items()                         # 以列表返回可遍历的(键, 值)元组数组
    dict.keys()                          # 以列表返回一个字典所有的键
    dict.values()                        # 以列表返回字典中的所有值
    dict.get(key, default=None)          # 返回指定键的值,如果值不在字典中返回default值
    dict.setdefault(key, default=None)   # 和get()类似, 如果键不存在于字典中,将会添加键并将值设为default。如果字典中包含该键,则返回该键对应的值,否则返回为该键设置的值。
    dict.update(dict2)                   # 把字典dict2的键/值对更新到dict里
    dict.popitem()                       # 返回并删除字典中的最后一对键和值
    dict.pop(key[,default])              # 删除字典给定键 key 及对应的值,返回值为被删除的值
    dict.fromkeys(seq[, val])            # 创建一个新字典,以序列 seq 中元素做字典的键,val为字典所有键对应的初始值
    len(dict)                            # 计算字典元素个数,即键的总数
    cmp(dict1, dict2)                    # 比较两个字典元素
    

       下面举几个例子:

    d = {}   # d = dict()
    d.setdefault('a', []).append(1)
    d.setdefault('a', []).append(2)
    d.setdefault('b', []).append(4)
    print(d)
    
    # 通过 in 或 not in 运算符判断字典是否包含指定的 key
    print('a' in d)
    
    e = d.copy()
    e.clear()
    print(e)
    
    # 获取元素
    print(d.get('a'))
    print(d['a'])
    print(d.get('c'))
    print(list(d.items()))
    print(list(d.keys()))
    print(list(d.values()))
    
    g = d.popitem()
    print(g)
    print(d)
    
    h = dict(k1 =1, k2 = 2)
    d.update(h)
    print(d)
    print(d.pop('k1'))
    
    # 由元组生成字典
    headers = ['name', 'shares', 'price']
    values = ['ACME', 100, 490.1]
    s = dict(zip(headers,values))
    print(s)

       dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。默认情况下,dict迭代的是key。

    d = {'d': 1, 'b': 2, 'c': 3}
    for key in d:
        print(key)
    

       如果要迭代value,可以这么做:

    d = {'d': 1, 'b': 2, 'c': 3}
    for value in d.values():
        print(value)
    

       同时迭代key和value,可以这么做:

    d = {'d': 1, 'b': 2, 'c': 3}
    for k, v in d.items():
        print(k, v)

    2. defaultdict

       使用defaultdict为字典的每个key设置默认值,当访问的key不存在时,该字典不会报错,而是会返回设置的默认值。

    from collections import defaultdict
    
    d = defaultdict(list)
    print(d['a'])   # 输出[]

       可以使用 defaultdict 来创建一个多值映射字典,即 value 是容器类型,免去初始化的麻烦。

    3. OrderedDict

       为了能控制一个字典中元素的顺序,你可以使用 collections 模块中的 OrderedDict 类。在迭代操作的时候它会保持元素被插入时的顺序。

    from collections import OrderedDict
    
    d = OrderedDict()
    d['foo'] = 1
    d['bar'] = 2
    d['spam'] = 3
    d['grok'] = 4
    
    # Outputs "foo 1", "bar 2", "spam 3", "grok 4"
    for key in d:
        print(key, d[key])
    

       测试的时候发现 dict 其实也是按插入顺序输出的,不知道是不是python3做出的更改。

    4. 字典推导式

       字典推导和列表推导的使用方法是类似的,只不中括号该改成大括号。直接举例说明:

    prices = {
        'ACME': 45.23,
        'AAPL': 612.78,
        'IBM': 205.55,
        'HPQ': 37.20,
        'FB': 10.75
    }
    
    p = { key: value for key, value in prices.items() if value > 200 }
    print(p)
    

      

  • 相关阅读:
    【HBase】+Java+批量增查数据
    【jmeter】+基础功能介绍
    【jmeter】+安装配置
    【IDEA】+激活
    【IDEA】+把A工程导入B工程中,A使用B中的类
    【Java】+字符中的字符替换
    【IDEA】+ 代码折叠与展开
    【Java】+获取当前方法名 or 类名
    【IDEA】+把自己做的小工具jar包上传到官方Maven仓库
    【IDEA】+将一个项目打成一个jar包,并在另一个项目中用这个jar包中的类(测试模块里的类没法用)
  • 原文地址:https://www.cnblogs.com/yanghh/p/13187285.html
Copyright © 2011-2022 走看看