Python--day05--dict讲解(可变,不可变数据类型讲解)及增删查改等操作

1,字典dict

数据类型划分:可变数据类型,不可变数据类型。

不可变数据类型: 元组 bool int str  可哈希

        注:str即字符创改变后行成了新的字符串,所以说字符串是不可变数据类型

可变数据类型:list  dict  set  不可哈希

dict  key  必须是不可变数据类型,可哈希

   value:任意数据类型

dict  优点:二分查找去查询

    存储大量的关系型数据

   特点:无序的(3.5以及3.5版本以前的dict是无序的)

增:

只有两种添加方法

1,第一种添加方法

  dic1['high'] = 185

  没有键值对,添加

  dic1['age'] = 16

  有键值对,则覆盖

2,第二种添加方法

  a,dic1.setdefault(‘weight’)     往字典里面添加‘weight’:None

  b,dic1.setdefault(‘weight’,150)  往字典里面添加‘weight’:150

  c,dic1.setdefault(‘name’,'二哥')如果name已经存在,就不再覆盖更改,维持原数据

 

删:

只有四种方法,用的话尽量用dic1.pop('age','设置一个当该键不存在的返回值')

1,dic1.pop('age')按照键去删,有返回值,即返回键所对应的值

  dic1.pop('二哥')如果没有二哥这个键就报错

    dic1.pop('二哥',‘没有此键’)这样写,有二哥这个键就直接删了,没有就返回值‘没有此键’。可设置返回值

    注:None不是一个字符串,是一个特殊的数据类型

2,dic1.popitem()随机删除一个键,返回的是一个元组,以键和值的形式

3,del dic1['name'] 删除键值

  del dic1['name1']如果键值name1不存在就会报错,所以尽量用pop,不用它

   del dic1删除整个字典,之所以会报错是因为不存在字典dic1

4,清空,打印dic1不会报错,只是什么都没有打印

  

改:

1,dic1['age'] = 16,直接覆盖也叫改

 

2,dic2.update(dic),它的意思是把dic中所有的键值对都更新到dic2中,也就是覆盖添加

  用途:以后保存cookie之类会用到,因为每次更新之后都不一样了。

查: 

1,dic1.keys() 查询返回一个列表装着键  

  dic1.values()查询返回一个列表装着值  

  dic1.items()查询返回一个列表装着元组,元组里面是键和值

  这三个查询是字典中所特有的

,

2, #循环查询,如果什么都不写,直接打印键,也就是for  i  in dic1相当于for  i  in  dic1.keys()

    for  i  in dic1:

        print(i)

  for i in dic1.items()打印出来是键值对

3,用两个参数k v来分别接收打印的值

4,dic1['name']通过键打印出相对应的值,如果没有这个键的话就会报错,用得很不方便。

5,dic1.get('name1') 没有name1这个键就返回None  

  dic1.get('name1','没有这个键') 没有name1这个键就返回没有这个键

面试题:

分别赋值:

1,用一行代码给a,b赋值  a,b = 1,2和 a,b,c = 0,0,0 (不能写成 a,b,c = 0)  

  通过a,b = [1,2]实现一行代码给a和b赋值

  给a和b赋值两个列表,元组(相当于编译器有个自动识别),看最小元素一一对应,列表里的元素个数必须相同,不能一个是2个元素,一个是3个元素。

  a,b = [1,2,3]多了一个元素3就会报错

2,用一行代码将a,b的值互换(下图中将a和b的内存地址互换)

 

 

ps:学完之后记得专门开一篇博客写面试题。

心得:python的容错率比较高,后面加十个分号都给你报错。(js的容错率最高,听别人说的)

 

posted @ 2018-09-28 01:01  莱茵河的雨季  阅读(527)  评论(0)    收藏  举报