第三天python3 字典

字典 dict

特点:key-value键值对的数据的集合

     可变的、无序的、key不重复;非线性结构;

字典的初始化

  d=dict() 或者 d = { }

  dict(**kwargs) 使用name=value对初始化一个字典;

  dict(iterable,**kwarg) 使用可迭代对象和name=value对构造字典,不可迭代对象的元素必须是一个二元结构;

        

  dict(mapping,**kwarg) 使用一个字典构建另一个字典

    

   类方法dict.formkeys(iterable,value)

字典元素的访问

  d[key]  返回key对应的值value,key不存在则抛出KeyError;
     

  get(key[,default]} 返回key对应的值value,key不存在返回缺省值,如果没有设置缺省值就返回None;

    

  setdefault(key[,default]) 返回key对应的值value,key不存在,添加kv对,value为default,并返回default,如果default没有设置,缺省为None;

     

字典的增加、修改

  d[key] =value  增加、修改   key存在则覆盖,key不存在则创建

  update([other]) ---> None

    使用另一个字段的kv对更新本字段,key不存在则添加,key存在,覆盖已经存在的key对应的值;就地修改;
    

    在set集合中元素的值是唯一的,在字典中key是唯一的,key的顺序是无序的;

字典的删除

  pop(key,[default])  key存在,则移除,并返回它的value;key不存在,返回给定的default;default未设置,key不存在则抛出KeyError异常;

  

  popitem()  移除并返回任意键值对,字典为empty,抛出KeyError;

  

  clear()  清空字典;

  del语句

字典的遍历

  1、遍历key
  

  遍历value

  

  遍历items也就是kv对

  

  总结:

  python3中,keys、values、items方法返回一个类似于一个生成器的可迭代对象,不会把函数的返回结果复制到内存中,本质上是一个字典的view对象,省内存;

移除

  

  应用示例:
  

  字典和set主要是使用key,如果想遍历value,则使用list最好;

缺省字典 defaultdict

collections.defaultdict([default_factory[,...]])

  第一个参数是default_factory,缺省是None,它提供一个初始化函数,当key不存在的时候,会调用这个工厂函数来生成key对应的value;

有序字典 OrderedDict

  有序字典可以记录元素的插入顺序,打印的时候也是按照这个顺序输出打印;

  3.6版本的Python的字典就是记录key插入的顺序(ipython不一定有效果)

  应用场景:

    1、假如使用字典记录了N个产品,这些产品使用ID由小到大加入字典中;

    2、除了使用字典检索的遍历,有时候需要取出ID,但是希望是按照输入的顺序,因为输入顺序是有序的;

  示例:

    

字典练习

统计元素个数

a = {}
b = 'abcdefbbcc'
for i in b:
    a[i] = a.get(i,0) + 1  #当变量i的值在a字典中不存在时,返回默认值0,并且加1赋值给a[i],写入字典,依次循环,当存在时,在原来的value基础上加1,赋值给a[i];
print(a)

执行结果:
{'a': 1, 'b': 3, 'c': 3, 'd': 1, 'e': 1, 'f': 1}
posted @ 2020-06-08 00:42  潇湘神剑  阅读(136)  评论(0编辑  收藏  举报