字典:可变,一种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全栈之路----数据类型—字典的更多相关文章

  1. python全栈开发笔记---------数据类型---字典方法

    def clear(self) 清空字典里所有元素 # info = { # "k1":18, # "k2":True, # "k3":[ ...

  2. python全栈开发笔记---------数据类型-----字典dict

    字典 #dict #1.基本结构 info= { "k1" : "v1", #键值对 "k2" : "v2" } ### ...

  3. Python全栈之路----数据类型—列表

    1.列表是一个数据的集合,集合内可以放任何数据类型,可对集合进行方便的增删改查操作.列表里面的数可以重复. L1 = [ ] #定义空列表 L2 = [ 'a' , 'b' , 'c' , 'd' ] ...

  4. Python全栈之路---数据类型—字符串

    字符串:有序的字符的集合,用于存储和表示基本的文本信息,一对单.双.或三引号中间包含的内容称之为字符串 1.特性:有序,不可变(开辟新地址存储字符串,python解释器会定期清空不用了的已存储的) & ...

  5. Python全栈之路----数据类型—元组类型

    元组类型:有序,不可变的,又叫只读列表  names = ("alex","jack","eric") 1.元组本身不可变,但如果元组中有可 ...

  6. Python全栈之路----目录

    Module1 Python基本语法 Python全栈之路----编程基本情况介绍 Python全栈之路----常用数据类型--集合 Module2 数据类型.字符编码.文件操作 Python全栈之路 ...

  7. python 全栈之路

    目录 Python 全栈之路 一. Python 1. Python基础知识部分 2. Python -函数 3. Python - 模块 4. Python - 面对对象 5. Python - 文 ...

  8. Python全栈之路目录结构

    基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...

  9. Python全栈之路----常用模块----hashlib加密模块

    加密算法介绍 HASH       Python全栈之路----hash函数 Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列 ...

随机推荐

  1. 爆料:2019手游折扣app是真福利还是骗人哪个靠谱?

    直接上干货.也许你在找寻,安全的手游折扣App,稳定的手游折扣App,不断续充的折扣App,续充不涨价的折扣App,网上的内容太多,难以分辨.那么看这个可以直接给你答案 1.历史(2004年成立,15 ...

  2. 【新特性】JDK1.5

    一.自动装箱与拆箱: 自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中. 自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用i ...

  3. server time zone

    问题原因 由于使用的Mysql数据库驱动版本太高,存在数据库和系统时区差异,所以出问题. 问题解决 Spring Boot配置文件中在url: jdbc:mysql://127.0.0.1:3306/ ...

  4. JVM运行时内存模型

    JDK1.7版本图 一,栈   基本数据类型的局部变量是直接保存在栈中. 栈帧:一个栈里面会包含多个栈帧,每一个栈帧代表一个方法的开始到结束,它涵盖了整个方法运行期间所有的操作和数据 栈帧 1:局部变 ...

  5. linux下使用maven修改hbase源码并重新编译

    一.准备 maven已配置 JDK已配置 二.修改相关hbase代码 三.使用maven编译hbase-2.0.0 在hbase src根目录下,执行以下命令 mvn clean package -D ...

  6. ABP权限认证

    通过AOP+特性实现 ABP默认的权限验证过滤器 AbpAuthorizationFilter   可以通过继承AsyncAuthorizationFilter 自定义自己的权限过滤器 权限数据存放表 ...

  7. springboot启动配置原理之三(事件监听机制)

    ApplicationContextInitializer public class HelloApplicationContextInitializer implements Application ...

  8. 20190226_xlVba提取查新标题和关键词

    Sub MainProc() Dim Sht As Worksheet Dim Wb As Workbook Set Wb = Application.ThisWorkbook Set Sht = W ...

  9. koa和express对比

    不同: 1.启动方式不同 koa采用了new Koa()的方式,而express采用传统的函数形式 2.中间件形式二者不一样,这是由二者处理中间件的逻辑差异导致的,实际上这也是二者最根本的差别 3.k ...

  10. STL 小白学习(4) deque

    #include <iostream> #include <deque> //deque容器 双口 using namespace std; void printDeque(d ...