1.12 dict 字典表
dict 字典表属于映射分类
dict的声明
>>> #dict类型 是 {}中包含若干个键值对
>>> d = dict()
>>> d = {}
>>> type(d)
<class 'dict'>
>>> #看来 一个键值对也没有的{}也是dict类型的
>>>
>>> # 1 用{}来声明键值对
>>> man = {'name':'Mark','height':1.8,'weight':80}
>>> #创建这个dict类型对象man 用来记录一个人的基本信息,姓名、身高、体重
>>>
>>> # 2 用dict()函数将参数转化为dict数据类型
>>> man1 = dict('name'='Mark','height'=1.8,'weight'=80)
SyntaxError: keyword can't be an expression
>>> man1 = dict(name='Mark',height=1.8,weight=80)
>>> man1
{'weight': 80, 'height': 1.8, 'name': 'Mark'}
>>>
>>>
>>> # 3 将list类型的转化为dict
>>> l = [('name','Mark'),('weight',80)]
>>> d = dict(l)
>>> d
{'weight': 80, 'name': 'Mark'}
>>>
>>> # 4 将tuple类型的转化为dict
>>> t = (('name','Mark'),('weight',80))
>>> dd = dict(t)
>>> dd
{'weight': 80, 'name': 'Mark'}
>>>
>>>
>>> # 5 创建只有键,值全部为None的dict
>>> keys = ['name','weight','height']
>>> ddd = dict.fromkeys(keys)
>>> ddd
{'weight': None, 'name': None, 'height': None}
>>>
>>>#特别说明,字典表的键必须是不可变类型的
#目前所学的字典表中的键值对都是无序的
获取dict中的键值对
# 1 判断一个键是否在dict中存在
>>>man1 = dict(name='Mark',height=1.8,weight=80)
>>> 'name' in man1
True
>>> 'Name' in man1
False
>>>
# 2 访问dict中某一个建的值
>>> man1['name']
'Mark'
>>>
>>> #这样访问很方便,但要确定键是存在的,不然会报错
>>> man1['Name']
Traceback (most recent call last):
File "<pyshell#43>", line 1, in <module>
man1['Name']
KeyError: 'Name'
>>>
# 为了使键在dict中不存在时获取键的值时不会报错或者提示一些个性化定制的信息时,可用get()函数
>>> man1.get('name')
'Mark'
>>>
>>> man1.get('Name')
>>> man1.get('Name','这个键在字典表中不存在哦')
'这个键在字典表中不存在哦'
>>>
# 3 嵌套的字典的元素访问
>>> man = {'name':{'姓':'王','名':'大锤'}}
>>> #如果想获得姓
>>> a = man['name']
>>> a
{'姓': '王', '名': '大锤'}
>>> b = a['姓']
>>> b
'王'
>>>
>>> #把这两步合在一起就是
>>> man['name']['姓']
'王'
>>>
# 4 dict中的键值对的遍历
# 4.1 获取dict中的键
>>> man1.keys()
dict_keys(['weight', 'height', 'name'])
>>>
# 4.2 获取dict中的值
>>> man1.values()
dict_values([80, 1.8, 'Mark'])
>>>
# 4.3 获取dict中的键值对
>>> man1.items()
dict_items([('weight', 80), ('height', 1.8), ('name', 'Mark')])
>>>
# 4.1、4.2、4.3中获取都是可迭代对象,不仅可以用来转换成其他类型的可迭代对象,还可以用来遍历
# 4.4 将 man1.values()转换成list类型
>>> list(man1.values())
[80, 1.8, 'Mark']
>>>
# 4.5 遍历man1.values()
>>> for i in man1.values():
print(i)
80
1.8
Mark
>>>
# 4.6 man1.items()返回的是键值对,如果遍历时想对键值对中的键、值分别操作,可以如下操作
>>> for k,v in man1.items():
print(k,'----',v)
weight ---- 80
height ---- 1.8
name ---- Mark
>>>
# 对,就是这样,从man1.items()取出的一个键值对的形式是('weight', 80),这个形式不就是元组嘛
#所以 k,v in man1.items() 就是把取出的每一个键值对组成的元组的第一个元素赋值给k,第二个元素赋值给v,而第一个
第二个元素分别就是键值对的键、值
dict的特性
特性 一:通过键(key),而非索引访问数据。k-v键值对
特性 二:值为任意对象的无序集合,而键必须是不可变类型的数据类型
特性 三:可变长度(键值对的对数是可改变的),异质(值可以是不同的数据类型),可任意嵌套(值还可以是一个dict,并且可以嵌套n多层)
特性 四:属于'可变映射'分类
特性 五:对象引用表(Hash Table),这个类似于list中的元素的访问法方式,dict中的键和作为值的对象的物理地址绑定在一起,这样通过键就能找到值
# 1 字典表的复制
>>> man1
{'weight': 80, 'height': 1.8, 'name': 'Mark'}
>>> man = man1.copy()
>>> man
{'weight': 80, 'height': 1.8, 'name': 'Mark'}
>>>
# 2 清空字典表中的键值对
>>> man.clear()
>>> man
{}
>>>
# 3 修改dict中键值对中键对应的值
>>> man1
{'weight': 80, 'height': 1.8, 'name': 'Mark'}
>>>
>>> man1['name'] = 'Tony'
>>> man1
{'weight': 80, 'height': 1.8, 'name': 'Tony'}
>>>
# 4 拼接两个dict
>>> d = dict(staff_id = ')
>>> d
{'}
>>>
>>> man1.update(d)
>>> man1
{'}
>>>
# 5 删除dict中的键值对
# 5.1 用全局函数 del()
>>> man1
{'}
>>>
>>> del man1['staff_id']
>>> man1
{'}
>>>
>>> #如果要删除的键值对的键在dict中不存在会如何
>>> del man1['staffpost']
Traceback (most recent call last):
File "<pyshell#132>", line 1, in <module>
del man1['staffpost']
KeyError: 'staffpost'
>>>
# 5.2 用dict自带的pop()函数进行键值对的删除
>>> man1
{'}
>>> man1.pop('post_id')
'
>>> man1
{'weight': 80, 'height': 1.8, 'name': 'Tony'}
>>>
>>> man1
{'}
>>> man1.pop('post_id')
'
>>> man1
{'weight': 80, 'height': 1.8, 'name': 'Tony'}
>>>
>>> #如果要弹出的键不存在
>>> man1.pop('staffpost')
Traceback (most recent call last):
File "<pyshell#140>", line 1, in <module>
man1.pop('staffpost')
KeyError: 'staffpost'
>>>
>>> #pop()函数可以再加一个参数,用来在键不存在的时候输出,代替报错:KeyError
>>> man1.pop('staffpost','该键不存在哦')
'该键不存在哦'
>>>
# 6 获取字典表的键值对数目
>>> man1
{'weight': 80, 'height': 1.8, 'name': 'Tony'}
>>> len(man1)
3
>>>
1.12 dict 字典表的更多相关文章
- 第三天:字典表dict、元组tuple、文件与类型汇总
1.字典表dict 声明 {键: 值,...} dict(键=值) d = {'isbn':'13123','title':'python入门'} #字典表中的键不能使用诸如列表这种可以改变的,只能使 ...
- Redis原理再学习04:数据结构-哈希表hash表(dict字典)
哈希函数简介 哈希函数(hash function),又叫散列函数,哈希算法.散列函数把数据"压缩"成摘要,有的也叫"指纹",它使数据量变小且数据格式大小也固定 ...
- python的dict()字典数据类型的方法详解以及案例使用
一.之前的回顾 # int 数字 # str 字符串 # list 列表 # tuple 元组 # dict 字典 字典中最重要的方法 keys() values() items() get upd ...
- 数据类型:list列表[]、元祖tuple()、dict字典{}
List 列表[] 可变的 lst = [1,2,3,4] #改 lst[(元素下标)] = '需要修改的' #通过下表修改 lst[下标:下标] = '需要修改的' #通过范围修改 #加 lst.a ...
- Python 全栈开发:dict(字典)常用方法操作、dict嵌套
数据类型的划分:可变数据类型和不可变数据类型. 不可变数据类型(可哈希):元祖.bool.int.str 可变数据类型(不可哈希):list.dict,set(集合) dict(字典): dict(字 ...
- 字典表+委托替代switch解决思路
参考:http://www.jianshu.com/p/8887b3b3e8ba 代码 namespace 解决Switch { class Program { delegate string fun ...
- SpringBoot整合freemarker中自定义标签获取字典表的数据
因为在前端要根据字典表中的数据去将1.2这些值转换成对应的文字解释 1.首先要创建一个类去实现 TemplateDirectiveModel 类 @Component public class Dic ...
- dict字典
dict字典 字典的概述 • 概述:使⽤键-值(key-value)⽅式存储. • key的特点: • 1.字典中的key必须是唯⼀的 • 2.key值必须是不可变的数据类型:字符串.元组.Numbe ...
- 探讨VMP 2.12.3 导入表修复
壳版本:VMProtect.Ultimate.2.12.3 样本:notepad.exe 目的:IAT修复 作者:MrWrong 标题:探讨VMP 2.12.3 导入表修复 只是感兴趣,没有其他目的. ...
随机推荐
- Velocity动态拼接字符串
1.在全局定义一个变量: #set($varName = "") 2.拼接字符串病截取字符串: #foreach( $role in $adminUser.roles) #set( ...
- scss 初学笔记 一 变量声明 默认的样式 嵌套
$width: 300px !default; $: 变量声明符号; width: 变量名称; 300px: 赋予变量的值; !default 代表默认样式 !defau ...
- linux_通配符
通配符和正则表达式区别? 通配符用在用户命令行bash环境,而正则表达式用于linux三剑客(awk, sed, grep) 那,有哪些通配符? * 所有字符 五星 ls *.txt # 列举目 ...
- Android开发模板代码(一)——简单打开图库选择照片
首先,先贴上样本代码 //检查权限 public void checkPermission() { if (ContextCompat.checkSelfPermission(this, Manife ...
- 学会配置nginx
一.作为一名开发人员,大家可能经常会用到服务器,但是一般线上的服务器可能都是公司公用的,而且线上的服务器一般也不是能随随便便给个人用的,所以部署本地服务器看来是一遍必不可少的事情和能力呀,所以,ngi ...
- linux shell 中的 2>&1 用法说明
linux中有三种标准输入输出,分别是 STDIN,STDOUT,STDERR,对应的数字是 0,1,2. STDIN 是标准输入,默认从键盘读取信息: STDOUT 是标准输出,默认将输出结果输出至 ...
- OpenStack和Hadoop的区别
其实,OpenStack和Hadoop不是同一个层次的东西,无法比较,非要说出个区别,那就是:OpenStack是云计算管理平台,应该是属于系统级别的软件,它的主体思想是把资源进行分离,给不同的用户提 ...
- Django跨域请求之JSONP和CORS
现在来新建一个Django项目server01,url配置为 url(r'^getData.html$',views.get_data) 其对应的视图函数为get_data: from django. ...
- Tomcat日志与Log4j日志
一:日志作用 更好的调试,分析问题. 普通的一个请求处理10秒钟,日志10秒钟,总共就得20秒钟,这肯定是不行的,因为日志严重影响了性能.所以,我们就有必要了解日志的实现方式,以及它是如何降低IO的时 ...
- 分离Webpack开发环境与生产环境的配置
这是Webpack+React系列配置过程记录的第五篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...