Python全栈之路----数据类型—字典
字典:可变,一种key-value的数据类型
info = { 'stu1101' : 'TengLan Wu' , 'stu1102' : 'LongZe Luola' , 'stu1103' : ' XiaoZe Maliya' }
1.特点:key-value结构;key必须可hash(被hash值不变),且必须唯一、必须为不可变类型;无序的(因为无索引,通过key查询);查找速度快
2.基本操作:创建,添加,查找,修改,删除,清空
>>> info = {
... '龙婷':[24,'design','UI',2333],
...'shanshan':[25,'PR','wild model',13445222]
... } #创建,‘:’前为key,后为value,value可为列表
>>> info
{'龙婷': [24, 'design', 'UI', 2333], 'shanshan': [25, 'PR', 'wild model', 13445222]}
>>> info['龙婷'] #查找时,字典名[key值],若不存在,报错
[24, 'design', 'UI', 2333]
>>> info['龙婷'][1] = '设计部' #value为列表,修改和列表类似
>>> info
{'龙婷': [24, '设计部', 'UI', 2333], 'shanshan': [25, 'PR', 'wild model', 13445222]}
>>> 'shanshan' in info #判断'shanshan'是否在列表里面
True
>>> info.get('shanshan') #获取'shanshan'的字典值
[25, 'PR', 'wild model', 13445222]
>>> info['alex'] #获取'alex'的字典值,如果不存在,就报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'alex'
>>> print(info.get('alex')) #获取'alex'的字典值,不存在返回为空
None
>>> info.pop('shanshan') #删除'shanshan'及其对应的value值,返回'shanshan'对应的value值
[25, 'PR', 'wild model', 13445222]
>>> info
{'龙婷': [24, 'design', 'UI', 2333]}
>>> info.popitem() #随机删除,因为字典本身是无须的
('龙婷', [24, 'design', 'UI', 2333])
>>> info
{}
>>> info = {'龙婷': [24, 'design', 'UI', 2333], 'shanshan': [25, 'PR', 'wild model', 13445222]}
>>> info['name'] = 'alex' #添加 key 为'name',对应value为'alex'
>>> info
{'龙婷': [24, 'design', 'UI', 2333], 'shanshan': [25, 'PR', 'wild model', 13445222], 'name': 'alex'}
>>> del info['name'] #删除'name'及其对应的value
>>> info
{'龙婷': [24, 'design', 'UI', 2333], 'shanshan': [25, 'PR', 'wild model', 13445222]}
3.多级字典的嵌套
>>> catelog = { 'A':{'a':['','']},'B':{'b':['','']},'C':{'c':['','']}} #创建一个嵌套列表
>>> catelog['B']['b'][1] += '***' #修改
>>> catelog
{'A': {'a': ['', '']}, 'B': {'b': ['', '4***']}, 'C': {'c': ['', '']}}
4.字典的用法:.keys() .values() .items() .update() .setdefault() .copy()->用法和列表完全一致
>>> info = {'alex':[24,'IT'],'rain':[24,'HR'],'jack':22}
>>> info
{'alex': [24, 'IT'], 'rain': [24, 'HR'], 'jack': 22}
>>> info.keys() #打印所有的key值
dict_keys(['alex', 'rain', 'jack'])
>>> info.values() #打印所有的value值
dict_values([[24, 'IT'], [24, 'HR'], 22])
>>> info.items() #将字典里的元素打印成小元组
dict_items([('alex', [24, 'IT']), ('rain', [24, 'HR']), ('jack', 22)])
>>> info
{'alex': [24, 'IT'], 'rain': [24, 'HR'], 'jack': 22}
>>> dic2 = {1:2,2:3,'jack':[22,'Jack Ma','Alibaba CEO']}
>>> info.update(dic2) #info和update合并,key值相同的被覆盖
>>> info
{'alex': [24, 'IT'], 'rain': [24, 'HR'], 'jack': [22, 'Jack Ma', 'Alibaba CEO'], 1: 2, 2: 3}
>>> info.setdefault(2,'new 2')
3
>>> info
{'alex': [24, 'IT'], 'rain': [24, 'HR'], 'jack': [22, 'Jack Ma', 'Alibaba CEO'], 1: 2, 2: 3}
>>> info.setdefault('test','new 2') #有key就获取对应value值,没有就创建
'new 2'
>>> info
{'alex': [24, 'IT'], 'rain': [24, 'HR'], 'jack': [22, 'Jack Ma', 'Alibaba CEO'], 1: 2, 2: 3, 'test': 'new 2'}
>>> info.fromkeys(['A','B','C']) #生成字典,给key批量赋值
{'A': None, 'B': None, 'C': None}
>>> info.fromkeys(['A','B','C'],'alex') #生成字典,给key批量赋值
{'A': 'alex', 'B': 'alex', 'C': 'alex'}
>>> info
{'alex': [24, 'IT'], 'rain': [24, 'HR'], 'jack': [22, 'Jack Ma', 'Alibaba CEO'], 1: 2, 2: 3, 'test': 'new 2'}
5.字典循环
>>> for k in info:
... print(k) #打印key
...
alex
rain
jack
1
2
test
>>> for k in info:
... print(k,info[k]) #打印key和对应的value
...
alex [24, 'IT']
rain [24, 'HR']
jack [22, 'Jack Ma', 'Alibaba CEO']
1 2
2 3
test new 2
>>> for k,v in info.items():
... print(k,v) #打印key和value,但是比较低效(字典本身查询速度很快,此种方法将字典转化成了列表再循环,浪费时间),不建议使用
...
alex [24, 'IT']
rain [24, 'HR']
jack [22, 'Jack Ma', 'Alibaba CEO']
1 2
2 3
test new 2
Python全栈之路----数据类型—字典的更多相关文章
- python全栈开发笔记---------数据类型---字典方法
def clear(self) 清空字典里所有元素 # info = { # "k1":18, # "k2":True, # "k3":[ ...
- python全栈开发笔记---------数据类型-----字典dict
字典 #dict #1.基本结构 info= { "k1" : "v1", #键值对 "k2" : "v2" } ### ...
- Python全栈之路----数据类型—列表
1.列表是一个数据的集合,集合内可以放任何数据类型,可对集合进行方便的增删改查操作.列表里面的数可以重复. L1 = [ ] #定义空列表 L2 = [ 'a' , 'b' , 'c' , 'd' ] ...
- Python全栈之路---数据类型—字符串
字符串:有序的字符的集合,用于存储和表示基本的文本信息,一对单.双.或三引号中间包含的内容称之为字符串 1.特性:有序,不可变(开辟新地址存储字符串,python解释器会定期清空不用了的已存储的) & ...
- Python全栈之路----数据类型—元组类型
元组类型:有序,不可变的,又叫只读列表 names = ("alex","jack","eric") 1.元组本身不可变,但如果元组中有可 ...
- Python全栈之路----目录
Module1 Python基本语法 Python全栈之路----编程基本情况介绍 Python全栈之路----常用数据类型--集合 Module2 数据类型.字符编码.文件操作 Python全栈之路 ...
- python 全栈之路
目录 Python 全栈之路 一. Python 1. Python基础知识部分 2. Python -函数 3. Python - 模块 4. Python - 面对对象 5. Python - 文 ...
- Python全栈之路目录结构
基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...
- Python全栈之路----常用模块----hashlib加密模块
加密算法介绍 HASH Python全栈之路----hash函数 Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列 ...
随机推荐
- Java Networking: UDP DatagramSocket (翻译)
原文:http://tutorials.jenkov.com/java-networking/udp-datagram-sockets.html UDP vs. TCP Sending Data vi ...
- iOS开发 -------- transform属性(形变)
一 transform属性 在OC中,通过transform属性可以修改对象的平移,比例和旋转角度 常用的创建transform结构体的方法分两大类 (1) 创建"基于控件初始位置&qu ...
- Spring 学习——Spring AOP——AOP配置篇Aspect、Pointcut
Schena——based AOP 声明 Spring所有的切面和通知器都必须放在一个<aop:config>标签内,可以同时配置多个<aop:config>元素. 每一个&l ...
- 【2.0】SpringBoot2配置Druid数据源及监控
什么是Druid? Druid首先是Java语言中最好的数据库连接池,也是阿里巴巴的开源项目.Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池, ...
- scala 入门Eclipse环境搭建
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/downloa ...
- [笔记] SQL性能优化 - 避免使用 IN 和 NOT IN
WHY? IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢? 1.效率低 可以参看我之前遇到的一个例子([小问题笔记(九)] SQL语句Not IN 效率低,用 NOT EXISTS试试 ...
- 常见的Git命令
最近想着需要把工作中做一个备份,除了本地保存之外,上传到码云是个不错的选择,除了Git的一些特点外,也可以让别人看到你的代码,共同修改之类的 首先在上传到码云之前,需要学习Git的一些基础教程,包括国 ...
- RNA velocity | RNA速率
单细胞转录组确实是利器,但我们大多只利用了表达的信息,而从reads到表达之间的信息完全被我们忽略了. 最近nature发了一篇单细胞方法类文章,讲得就是如何利用RNA velocity来做细胞发育路 ...
- js之获取元素最终css属性
很多时候 我们是不用jquery库的,虽然他很好,获取元素最终的css属性我们可以用:getComputedStyle window.getComputedStyle(element, null).g ...
- MVC实战之排球计分(五)—— Controller的设计与实现
控制器 控制器接受用户的输入并调用模型和视图去完成用户的需求.所以当单击Web页面中的超链接和发送HTML表单时, 控制器本身不输出任何东西和做任何处理.它只是接收请求并决定调用哪个模型构件去处理请求 ...