day5:字典dict
1, 判断是不是列表
- li = ['lis3a', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
- if type(li) == list:
- print("list")
2,字典的key必须是不可变数据类型,也就是bool,int,str,tuple,value可以是任意的数据类型,有点二分查找去查询,存储大量的键值对,特点是无序的,3.5以前版本
3,字典的增加与修改方式,没有的添加,有的覆盖
- dict1 = {"name":"lisa","age":"","hobby":"piano"}
- dict1["height"]="" #没有的添加进去
- dict1["name"]="mary" #有的覆盖,就相当于修改了
- print(dict1)
- 运行结果:
- {'name': 'mary', 'age': '', 'hobby': 'piano', 'height': ''}
4,添加的另外一种方式setdefault
- dict1 = {"name":"lisa","age":"","hobby":"piano"}
- dict1.setdefault("hometown") # 不设置value默认为None
- print(dict1)
- dict1.setdefault("name") # 本来有的不会更新
- print(dict1)
- dict1.setdefault("gender","female") # 设置了value
- print(dict1)
- dict1.setdefault(,True) # 支持很多数据类型,详见上一条
- print(dict1)
5,删除,pop函数,必须制定key,不指定会报错,制定成value也会报错,制定的不存在的key 也会崩溃
- dict1 = {"name":"lisa","age":"","hobby":"piano"}
- print(dict1.pop())
- 运行结果:
- Traceback (most recent call last):
- File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/5.1_dict.py", line , in <module>
- print(dict1.pop())
- TypeError: pop expected at least arguments, got
- dict1 = {"name":"lisa","age":"","hobby":"piano"}
- print(dict1.pop(“name”))
- 运行结果:
- lisa
- dict1 = {"name":"lisa","age":"","hobby":"piano"}
- print(dict1.pop("gender"))
- 运行结果:
- Traceback (most recent call last):
- File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/5.1_dict.py", line , in <module>
- print(dict1.pop("gender"))
- KeyError: 'gender'
- dict1 = {"name":"lisa","age":"","hobby":"piano"}
- print(dict1.pop("gender",None))
- # 这个可以专门用来表示没有这个key时候的返回值,或者提示“没有此键”,等也用来防止程序崩溃
- 运行结果:
- None
6,删除的另外一种popitem ,不需要参数,3.5以前随机删除,3.5以后是最后一个
7,del函数可以删除摸一个,或者删除整个dict,这个和列表类似
8,清空字典,clear函数,这个也和字典类似
9,改,update函数
- dict1 = {"name":"lisa","age":"","hobby":"piano"}
- dict2 ={'name':"mary","gender":"female"}
- dict2.update(dict1)
- print(dict1)
- print(dict2)
- #用dict1来更新dict2,没有的添加,有的更新value
- 运行结果:
- {'name': 'lisa', 'age': '', 'hobby': 'piano'}
- {'name': 'lisa', 'gender': 'female', 'age': '', 'hobby': 'piano'}
10,查,区分,value,key,item
- dict1 = {"name":"lisa","age":"","hobby":"piano"}
- print(dict1.keys())
- print(dict1.values())
- print(dict1.items())
- 运行结果:
- dict_keys(['name', 'age', 'hobby'])
- dict_values(['lisa', '', 'piano'])
- dict_items([('name', 'lisa'), ('age', ''), ('hobby', 'piano')])
- dict1 = {"name":"lisa","age":"","hobby":"piano"}
- for i in dict1: # 默认输出的是key和下一句效果是一样的
- print(i)
- for i in dict1.keys():
- print(i)
- 运行结果:
- name
- age
- hobby
- name
- age
- hobby
11,穿插点字典以外的知识点:
- a,b,c =1,2,3
- print(a,b,c)
- a,b = b,a
- print(a,b,c)
- 运行结果:
- 1 2 3
- 2 1 3
- a,b = [1,2]
- print(a,b)
- a,b =[1,2],[3,4]
- print(a,b)
- # 永远按照最小的单位进行拆包
- 运行结果:
- 1 2
- [1, 2] [3, 4]
12,iterm打印出来的是元祖,可以进行拆包赋值给k,v
- dict1 = {"name":"lisa","age":"","hobby":"piano"}
- for i in dict1.values():
- print(i)
- for i in dict1.items():
- print(i)
- for k,v in dict1.items():
- print(k,v)
- 运行结果:
- lisa
- 22
- piano
- ('name', 'lisa')
- ('age', '')
- ('hobby', 'piano')
- name lisa
- age 22
- hobby piano
13,查,两种,首选get函数,因为不存在是不会崩溃
- v1 = dict1.get("name")
- print(v1)
- v1 = dict1.get("name1")
- print(v1)
- v1 =dict1.get("name1","没有此键")
- print(v1)
- 运行结果:
- lisa
- None
- 没有此键
- dict1 = {"name":"lisa","age":"","hobby":"piano"}
- v1 =dict1["name"]
- print(v1)
- 运行结果:
- lisa
- dict1 = {"name":"lisa","age":"","hobby":"piano"}
- v1 =dict1["name1"]
- print(v1)
- 运行结果:
- Traceback (most recent call last):
- File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/5.1_dict.py", line 82, in <module>
- v1 =dict1["name1"]
- KeyError: 'name1'
14,一道练习题
- str1 ="hiohph65nooihoh89nlohiolh76nklnl4"
- # 找出里面有多少个数字,65算一个,89算一个
- for i in str1:
- if i.isdigit():
- break
- else:
- str1 = str1.replace(i," ") #用空格替换非数字,这里一定要把新生成的字符串赋值回去
- l = str1.split()
- print(len(l))
- 运行结果:
- 4
day5:字典dict的更多相关文章
- day5 字典 dict
数据类型划分:可变数据类型,不可变数据类型不可变数据类型:元组,数字,布尔,str, == 可哈希可变数据类型:list , dict, set == 不可哈希dict的 key 必须是不可变数据类型 ...
- python中几个常见的黑盒子之“字典dict” 与 “集合set”
这里说到"字典dict" 和 "集合set"类型,首先,先了解一下,对于python来说,标准散列机制是有hash函数提供的,对于调用一个__hash__方法: ...
- Python中的元组(tuple)、列表(list)、字典(dict)
-------------------------------更新中-------------------------------------- 元组(tuple): 元组常用小括号表示,即:(),元 ...
- python中字典dict的操作
字典可存储任意类型的对象,由键和值(key - value)组成.字典也叫关联数组或哈希表. dict = {' , 'C' : [1 , 2 , 3] } dict['A'] = 007 # 修改字 ...
- python中的字典(dict),列表(list),元组(tuple)
一,List:列表 python内置的一种数据类型是列表:list.list是一种有序的数据集合,可以随意的添加和删除其中的数据.比如列出班里所有的同学的名字,列出所有工厂员工的工号等都是可以用到列表 ...
- Python - 字典(dict) 详解 及 代码
字典(dict) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17291329 字典(dict)是表示映射的数据 ...
- Redis的字典(dict)rehash过程源代码解析
Redis的内存存储结构是个大的字典存储,也就是我们通常说的哈希表.Redis小到能够存储几万记录的CACHE,大到能够存储几千万甚至上亿的记录(看内存而定),这充分说明Redis作为缓冲的强大.Re ...
- python基础之字典dict和集合set
作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...
- 自学Python2.4-基本数据类型-字典dict(objct)
Python dict方法总结 一.字典介绍 1.字典概述 ①字典是python中唯一内建的映射类型.又称关联数组或散列②映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关 ...
随机推荐
- [na][dhcp]dhcp细枝末节&dhcp防攻
回顾了下,真是以前是一种感觉以后是一种感觉. 特点: 1.dhcp服务器上的配置的网关不一定要有这个ip 2.dhcp服务只是个类似数据库而已(如果不在一个lan). 3. 如果dhcp不在一个lan ...
- mysql 存储引擎对索引的支持
一.首先给出mysql官方文档给出的不同存储引擎对索引的支持 从上面的图中可以得知,mysql 是支持hash索引的,但支持和不支持又和具体的存储引擎有关系.从图中看到InnoDB是支持Btree索引 ...
- Xmpp获取离线消息
文章只是选取了其中一段,无XMPP基础的人可能看起来有点复杂; 假设我们注册了一个用户,用户名叫shimiso,那么我们如何让shimiso这个用户一登陆就取到离线消息呢? PPConnection. ...
- 清理configure脚本生成的文件
今天在修改dovecot的代码时遇到一个问题,需要重新执行configure脚本,想先把之前configure生成的文件删除掉. 结果看了configure --help没有找到可以用的命令,最后搜了 ...
- OGG-01028 Incompatible Record解决办法
How to recover from an OGG-01028 Incompatible Record if the trail is not corrupt (Doc ID 1507462.1) ...
- Linux expect 使用(免密登录跳板机)
登录公司的跳板机是挺麻烦的事,首先要ssh,然后输入密码,有的公司可能还要动态密码,前两步操作都是固定的,所以能免去前两步的操作就会方便很多(线上出问题也能尽快登上去,免得紧张密码一直输错,哈哈哈). ...
- git push origin master和git push有什么区别?
1.master是主分支,还可以建一些其他的分支用于开发.2.git push origin master的意思就是上传本地当前分支代码到master分支.git push是上传本地所有分支代码到远程 ...
- Python内置类型——set
Python中,内置类型set和frozenset用来表示集合,我们首先查看这两个类型支持的特殊对象,从而可以理解他们的特性. >>> dir(set) ['__and__', '_ ...
- centos7目录统计之du命令
CentOS下du查看计算目录大小的命令 用法实例: [root@localhost local]# du -hs smgpdfd 3.3G smgpdfd [root@localhost lo ...
- 【转帖】解决远程连接MariaDB(mysql)很慢的方法
在CentOS7上安装完成MariaDB之后,发现无论命令行还是程序中连接MariaDB的时候都很慢,大约要一二十秒,于是网上搜索了一番,发现下面的文章内容: 在进行 ping和route后发现网络通 ...