Python中的dict字典

时间:2021-07-14
本文章向大家介绍Python中的dict字典,主要包括Python中的dict字典使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

字典dict

介绍

  • key-value键值对的数据集合
  • 是可变的、无序的、key具有唯一性

字典创建

  • d = dict()
  • d = {}
  • Dict(**kwargs) 使用name=value初始化一个字典

字典访问

  • d[key]
    • 返回key对应的value
    • key不存在抛出keyError异常
  • get(key[, default])
    • 返回key对应的value
    • key不存在返回默认值,如果没有default返回None
    • get方法不会抛异常
  • setdefault(key[, default])
    • 返回key对应的value
    • key不存在,则添加kv对,value为default值

字典增加和修改

  • d[key] = value
    • 将key对应的值修改为value
    • key不存在添加新的键值对
  • update([other]) —> None
    • 使用另一个字典的键值对更新本字典
    • key不存在,就添加
    • key存在,覆盖已存在的key对应的value
    • 原处修改

字典删除

  • pop(key[, default])
    • key存在,移除,并返回它的value
    • key不存在,返回给定的default
    • default未设置,key不存在则抛出keyError
  • popitem()
    • 移除并返回一个任意的键值对
    • 字典为空,抛出keyError
  • clear()
    • 清空字典

字典删除

  • del语句
    • del d['c']
    • del本质上删除的是一个对象的引用

字典遍历

  • for … in dict

    • 遍历key

      for k in d1:
          print(k)
      for k in d.keys():
          print(k)
      
    • 遍历value

      for v in d.values():
          print(v)
      for v in d:
          print(d.get(v))
      
    • 遍历键值对

    • for item in d.items():
          print(item)   # 返回值为元组
          
      for k,v in d.items()  # k,v 可使用结构方式
          print(k,v) # 返回k或者v
      
    • 总结

      • python3中,keys/values/items方法返回一个可迭代对象,不会将结果保存在内存中
      • python2中,上面的方法会返回一个新的列表,占据新的内存,所以python2中建议使用iterkeys、itervalues,会返回一个迭代器

字典的key

  • key的要求必须为可hash

缺省字典defaultdict

  • Collections.defaultdict([default_factory[,...]])

    • 第一个参数是default_factory,缺省是None,它提供了一个初始化函数,当key不存在,这个工厂函数来生成key对应的value
    from collections import defaultdict
    d1 = {}
    d2 = defaultdict(list) # 创建缺省字典,如果key不存在,则生成k对应的空列表
    for k in "abcde":
        for v in range(5):
            if k not in d1.keys():
                d1[k] = []
            d1[k].append(v)
    print(d1)
            
    for k in "mnopq":
        for v in range(3):
            d2[k].append(v)  # 相当于调用缺省字典的工厂函数判断k是否存在,如果不存在则创建键值对,并添加v
    print(d2)
    

顺序字典orderedDict

  • collections.OrderedDict([items])

    • 有序字典可以记录元素插入的顺序,打印的时候也是按照这个顺序输出。
    • key并不是按照加入的顺序排列,可使用OrderedDict来顺序排列
    # 普通字典
    >>> d = {}
    >>> d['apple'] = 3
    >>> d['orange'] = 4
    >>> d['pear'] = 1
    >>> d['banabna'] = 2
    >>> d
    {'orange': 4, 'pear': 1, 'apple': 3, 'banabna': 2}
    
    # 有序字典
    >>> from collections import OrderedDict
    >>> od = OrderedDict()
    >>> od['apple'] = 3
    >>> od['orange'] = 4
    >>> od['pear'] = 1
    >>> od['banabna'] = 2
    >>> od
    OrderedDict([('apple', 3), ('orange', 4), ('pear', 1), ('banabna', 2)])
    

原文地址:https://www.cnblogs.com/larry-yu/p/15009879.html