Day05 字典

01 昨日内容回顾

02 作业讲解

03 字典

 why

        1,列表如果存储大量的数据,查询速度相对慢一些。

        2,列表存储的数据一般没有什么关联性。

        [小潘, 175, ,......]

        针对以上因素,python提供了一个基础数据类型:dict字典。

        数据类型的分类:

            容器型数据类型:listtupledict set

            非容器型数据类型:str bool int

 

            可变(不可哈希)的数据类型:listdictset

            不可变(可哈希)的数据类型:strbool, int,tuple

    

what:字典:

        {'name': 'alex'} 以键值对形式存储的数据类型。

        1,字典的键必须是不可变(可哈希hash)的数据类型,唯一的不重复。

            字典的值可以是任意数据类型(对象)。

        2,字典的查询速度非常快。

        3,字典在3.5包括3.5之前是无序的,但是3.6优化机制,字典会按照创建字典之初的顺序排列。

        4,字典可以存储大量的关联性数据。

        {'name': 'alex','python3':['小潘','春哥', '二师兄'],

    how

        增删改查

        其他操作

    where

        当你想构建大量的关系型数据的时候,用到dict

dict = ['name':'addit','age':18,'height':170]

 

1) dict['weight'] = 129

有则覆盖,无则添加

2)dict.setdefault('name':'wen') ----name不会修改

   dict.setdefault('weight') ---- ‘ weight ’: None

有则不改,无则加None

 
1)ret = dict.pop('name')  有返回值,对应返回值

    ret1 = dict.pop('name1',‘没有此键’)  ## 设置了返回值,不报错,返回‘没有此键’

2) dict.clear()   清空列表

3)popitem() 删除最后一个键值对

  ## python3.5以前是随机删除,3.6后面最后一个键值对

4)del dict  # 删除整个字典   报错

      del dict['name']  删除这个键和值
1)dic['age'] = 30

2) dict1 =  ['name':'addit','age':18,'height':170]

    dict2 = ['name':'wen','age':17','sex':'male']

    dict1.update(dict2)  #

    print(dict1) # ['name':'addit','age':18,'height':170,'sex':'male']

    print(dict2) # ['name':'wen','age':17,'sex':'male']

     dict1.update(weight=120,a=1###['name':'addit','age':18,'height':170,'sex':'male','weight':120,'a':1]
查:

1) #按照键查对应的值
print(dic['name'])   不存在则报错

2) dict.get()
ret = dict.get('age')

ret1 = dict.get('age1','没有此键‘)   不存在则返回一个None
3)直接循环字典:
下面三个都是返回一个类似于列表的容器的特殊数据类型。

    1.. dict.keys()     for key in dict.keys()

    2.. dict.values()  for v in dict.values()

    3.. dict.items()    for k,v in dict.items()

 

其他操作:

1) dict.fromkeys(seqvalue) 返回一个新字典

Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。

dic = dict.fromkeys('abc', '春哥')

dic = dict.fromkeys([1,2,3],['alex])

坑:值如果是可变的数据类型,那么所有的值都是一个内存地址

dic[1].append(666)

print(dic)  ###  {1:['alex',666],2:['alex',666],3:['alex',666]}

 

2) 格式化输出的第二种

dic = {'name': '太白', 'sex': '', 'age': 18}

msg = '我叫%(name)s,今年%(age)s,性别%(sex)s' % dic

msg = '我叫{},今年{},性别{}'.format(dic['name'],dic['age'],dic['sex'])

 

其他内容:

分别赋值:

a,b = b ,a

a,b,c = (100,200,300)

a,b,c = [100,200,300]

 

04 字典的嵌套

找到字典的键,然后对对应值进行操作

05 集合(了解)

posted @ 2018-12-25 19:07  addit  Views(147)  Comments(1)    收藏  举报