1, 判断是不是列表

  1. li = ['lis3a', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
  2. if type(li) == list:
  3. print("list")

2,字典的key必须是不可变数据类型,也就是bool,int,str,tuple,value可以是任意的数据类型,有点二分查找去查询,存储大量的键值对,特点是无序的,3.5以前版本

3,字典的增加与修改方式,没有的添加,有的覆盖

  1. dict1 = {"name":"lisa","age":"","hobby":"piano"}
  2. dict1["height"]="" #没有的添加进去
  3. dict1["name"]="mary" #有的覆盖,就相当于修改了
  4. print(dict1)
  5.  
  6. 运行结果:
  7. {'name': 'mary', 'age': '', 'hobby': 'piano', 'height': ''}

4,添加的另外一种方式setdefault

  1. dict1 = {"name":"lisa","age":"","hobby":"piano"}
  2.  
  3. dict1.setdefault("hometown") # 不设置value默认为None
  4. print(dict1)
  5.  
  6. dict1.setdefault("name") # 本来有的不会更新
  7. print(dict1)
  8.  
  9. dict1.setdefault("gender","female") # 设置了value
  10. print(dict1)
  11.  
  12. dict1.setdefault(,True) # 支持很多数据类型,详见上一条
  13. print(dict1)

5,删除,pop函数,必须制定key,不指定会报错,制定成value也会报错,制定的不存在的key 也会崩溃

  1. dict1 = {"name":"lisa","age":"","hobby":"piano"}
  2. print(dict1.pop())
  3.  
  4. 运行结果:
  5. Traceback (most recent call last):
  6. File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/5.1_dict.py", line , in <module>
  7. print(dict1.pop())
  8. TypeError: pop expected at least arguments, got
  9.  
  10. dict1 = {"name":"lisa","age":"","hobby":"piano"}
  11. print(dict1.pop(“name”))
  12.  
  13. 运行结果:
  14. lisa
  1. dict1 = {"name":"lisa","age":"","hobby":"piano"}
  2. print(dict1.pop("gender"))
  3.  
  4. 运行结果:
  5. Traceback (most recent call last):
  6. File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/5.1_dict.py", line , in <module>
  7. print(dict1.pop("gender"))
  8. KeyError: 'gender'
  1. dict1 = {"name":"lisa","age":"","hobby":"piano"}
  2. print(dict1.pop("gender",None))
  3. # 这个可以专门用来表示没有这个key时候的返回值,或者提示“没有此键”,等也用来防止程序崩溃
  4. 运行结果:
  5. None

6,删除的另外一种popitem ,不需要参数,3.5以前随机删除,3.5以后是最后一个

7,del函数可以删除摸一个,或者删除整个dict,这个和列表类似

8,清空字典,clear函数,这个也和字典类似

9,改,update函数

  1. dict1 = {"name":"lisa","age":"","hobby":"piano"}
  2. dict2 ={'name':"mary","gender":"female"}
  3. dict2.update(dict1)
  4. print(dict1)
  5. print(dict2)
  6. #用dict1来更新dict2,没有的添加,有的更新value
  7.  
  8. 运行结果:
  9. {'name': 'lisa', 'age': '', 'hobby': 'piano'}
  10. {'name': 'lisa', 'gender': 'female', 'age': '', 'hobby': 'piano'}

10,查,区分,value,key,item

  1. dict1 = {"name":"lisa","age":"","hobby":"piano"}
  2. print(dict1.keys())
  3. print(dict1.values())
  4. print(dict1.items())
  5.  
  6. 运行结果:
  7. dict_keys(['name', 'age', 'hobby'])
  8. dict_values(['lisa', '', 'piano'])
  9. dict_items([('name', 'lisa'), ('age', ''), ('hobby', 'piano')])
  1. dict1 = {"name":"lisa","age":"","hobby":"piano"}
  2. for i in dict1: # 默认输出的是key和下一句效果是一样的
  3. print(i)
  4.  
  5. for i in dict1.keys():
  6. print(i)
  7.  
  8. 运行结果:
  9. name
  10. age
  11. hobby
  12. name
  13. age
  14. hobby

11,穿插点字典以外的知识点:

  1. a,b,c =1,2,3
  2. print(a,b,c)
  3. a,b = b,a
  4. print(a,b,c)
  5.  
  6. 运行结果:
  7. 1 2 3
  8. 2 1 3
  1. a,b = [1,2]
  2. print(a,b)
  3. a,b =[1,2],[3,4]
  4. print(a,b)
  5. # 永远按照最小的单位进行拆包
  6. 运行结果:
  7. 1 2
  8. [1, 2] [3, 4]

12,iterm打印出来的是元祖,可以进行拆包赋值给k,v

  1. dict1 = {"name":"lisa","age":"","hobby":"piano"}
  2. for i in dict1.values():
  3. print(i)
  4.  
  5. for i in dict1.items():
  6. print(i)
  7.  
  8. for k,v in dict1.items():
  9. print(k,v)
  10.  
  11. 运行结果:
  12. lisa
  13. 22
  14. piano
  15. ('name', 'lisa')
  16. ('age', '')
  17. ('hobby', 'piano')
  18. name lisa
  19. age 22
  20. hobby piano

13,查,两种,首选get函数,因为不存在是不会崩溃

  1. v1 = dict1.get("name")
  2. print(v1)
  3.  
  4. v1 = dict1.get("name1")
  5. print(v1)
  6.  
  7. v1 =dict1.get("name1","没有此键")
  8. print(v1)
  9.  
  10. 运行结果:
  11. lisa
  12. None
  13. 没有此键
  1. dict1 = {"name":"lisa","age":"","hobby":"piano"}
  2. v1 =dict1["name"]
  3. print(v1)
  4.  
  5. 运行结果:
  6. lisa
  7.  
  8. dict1 = {"name":"lisa","age":"","hobby":"piano"}
  9. v1 =dict1["name1"]
  10. print(v1)
  11.  
  12. 运行结果:
  13. Traceback (most recent call last):
  14. File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/5.1_dict.py", line 82, in <module>
  15. v1 =dict1["name1"]
  16. KeyError: 'name1'

14,一道练习题

  1. str1 ="hiohph65nooihoh89nlohiolh76nklnl4"
  2. # 找出里面有多少个数字,65算一个,89算一个
  3. for i in str1:
  4. if i.isdigit():
  5. break
  6. else:
  7. str1 = str1.replace(i," ") #用空格替换非数字,这里一定要把新生成的字符串赋值回去
  8.  
  9. l = str1.split()
  10. print(len(l))
  11.  
  12. 运行结果:
  13. 4

day5:字典dict的更多相关文章

  1. day5 字典 dict

    数据类型划分:可变数据类型,不可变数据类型不可变数据类型:元组,数字,布尔,str, == 可哈希可变数据类型:list , dict, set == 不可哈希dict的 key 必须是不可变数据类型 ...

  2. python中几个常见的黑盒子之“字典dict” 与 “集合set”

    这里说到"字典dict" 和 "集合set"类型,首先,先了解一下,对于python来说,标准散列机制是有hash函数提供的,对于调用一个__hash__方法: ...

  3. Python中的元组(tuple)、列表(list)、字典(dict)

    -------------------------------更新中-------------------------------------- 元组(tuple): 元组常用小括号表示,即:(),元 ...

  4. python中字典dict的操作

    字典可存储任意类型的对象,由键和值(key - value)组成.字典也叫关联数组或哈希表. dict = {' , 'C' : [1 , 2 , 3] } dict['A'] = 007 # 修改字 ...

  5. python中的字典(dict),列表(list),元组(tuple)

    一,List:列表 python内置的一种数据类型是列表:list.list是一种有序的数据集合,可以随意的添加和删除其中的数据.比如列出班里所有的同学的名字,列出所有工厂员工的工号等都是可以用到列表 ...

  6. Python - 字典(dict) 详解 及 代码

    字典(dict) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17291329 字典(dict)是表示映射的数据 ...

  7. Redis的字典(dict)rehash过程源代码解析

    Redis的内存存储结构是个大的字典存储,也就是我们通常说的哈希表.Redis小到能够存储几万记录的CACHE,大到能够存储几千万甚至上亿的记录(看内存而定),这充分说明Redis作为缓冲的强大.Re ...

  8. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  9. 自学Python2.4-基本数据类型-字典dict(objct)

    Python dict方法总结 一.字典介绍 1.字典概述 ①字典是python中唯一内建的映射类型.又称关联数组或散列②映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关 ...

随机推荐

  1. [na][dhcp]dhcp细枝末节&dhcp防攻

    回顾了下,真是以前是一种感觉以后是一种感觉. 特点: 1.dhcp服务器上的配置的网关不一定要有这个ip 2.dhcp服务只是个类似数据库而已(如果不在一个lan). 3. 如果dhcp不在一个lan ...

  2. mysql 存储引擎对索引的支持

    一.首先给出mysql官方文档给出的不同存储引擎对索引的支持 从上面的图中可以得知,mysql 是支持hash索引的,但支持和不支持又和具体的存储引擎有关系.从图中看到InnoDB是支持Btree索引 ...

  3. Xmpp获取离线消息

    文章只是选取了其中一段,无XMPP基础的人可能看起来有点复杂; 假设我们注册了一个用户,用户名叫shimiso,那么我们如何让shimiso这个用户一登陆就取到离线消息呢? PPConnection. ...

  4. 清理configure脚本生成的文件

    今天在修改dovecot的代码时遇到一个问题,需要重新执行configure脚本,想先把之前configure生成的文件删除掉. 结果看了configure --help没有找到可以用的命令,最后搜了 ...

  5. OGG-01028 Incompatible Record解决办法

    How to recover from an OGG-01028 Incompatible Record if the trail is not corrupt (Doc ID 1507462.1) ...

  6. Linux expect 使用(免密登录跳板机)

    登录公司的跳板机是挺麻烦的事,首先要ssh,然后输入密码,有的公司可能还要动态密码,前两步操作都是固定的,所以能免去前两步的操作就会方便很多(线上出问题也能尽快登上去,免得紧张密码一直输错,哈哈哈). ...

  7. git push origin master和git push有什么区别?

    1.master是主分支,还可以建一些其他的分支用于开发.2.git push origin master的意思就是上传本地当前分支代码到master分支.git push是上传本地所有分支代码到远程 ...

  8. Python内置类型——set

    Python中,内置类型set和frozenset用来表示集合,我们首先查看这两个类型支持的特殊对象,从而可以理解他们的特性. >>> dir(set) ['__and__', '_ ...

  9. centos7目录统计之du命令

    CentOS下du查看计算目录大小的命令 用法实例: [root@localhost local]# du -hs smgpdfd 3.3G    smgpdfd [root@localhost lo ...

  10. 【转帖】解决远程连接MariaDB(mysql)很慢的方法

    在CentOS7上安装完成MariaDB之后,发现无论命令行还是程序中连接MariaDB的时候都很慢,大约要一二十秒,于是网上搜索了一番,发现下面的文章内容: 在进行 ping和route后发现网络通 ...