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 字典表的更多相关文章

  1. 第三天:字典表dict、元组tuple、文件与类型汇总

    1.字典表dict 声明 {键: 值,...} dict(键=值) d = {'isbn':'13123','title':'python入门'} #字典表中的键不能使用诸如列表这种可以改变的,只能使 ...

  2. Redis原理再学习04:数据结构-哈希表hash表(dict字典)

    哈希函数简介 哈希函数(hash function),又叫散列函数,哈希算法.散列函数把数据"压缩"成摘要,有的也叫"指纹",它使数据量变小且数据格式大小也固定 ...

  3. python的dict()字典数据类型的方法详解以及案例使用

    一.之前的回顾 # int  数字 # str 字符串 # list 列表 # tuple 元组 # dict 字典 字典中最重要的方法 keys() values() items() get upd ...

  4. 数据类型:list列表[]、元祖tuple()、dict字典{}

    List 列表[] 可变的 lst = [1,2,3,4] #改 lst[(元素下标)] = '需要修改的' #通过下表修改 lst[下标:下标] = '需要修改的' #通过范围修改 #加 lst.a ...

  5. Python 全栈开发:dict(字典)常用方法操作、dict嵌套

    数据类型的划分:可变数据类型和不可变数据类型. 不可变数据类型(可哈希):元祖.bool.int.str 可变数据类型(不可哈希):list.dict,set(集合) dict(字典): dict(字 ...

  6. 字典表+委托替代switch解决思路

    参考:http://www.jianshu.com/p/8887b3b3e8ba 代码 namespace 解决Switch { class Program { delegate string fun ...

  7. SpringBoot整合freemarker中自定义标签获取字典表的数据

    因为在前端要根据字典表中的数据去将1.2这些值转换成对应的文字解释 1.首先要创建一个类去实现 TemplateDirectiveModel 类 @Component public class Dic ...

  8. dict字典

    dict字典 字典的概述 • 概述:使⽤键-值(key-value)⽅式存储. • key的特点: • 1.字典中的key必须是唯⼀的 • 2.key值必须是不可变的数据类型:字符串.元组.Numbe ...

  9. 探讨VMP 2.12.3 导入表修复

    壳版本:VMProtect.Ultimate.2.12.3 样本:notepad.exe 目的:IAT修复 作者:MrWrong 标题:探讨VMP 2.12.3 导入表修复 只是感兴趣,没有其他目的. ...

随机推荐

  1. MySQL服务器最大连接数怎么设置才合理[转]

    如果mysql 连接数据设置不合理可能会导致很小的流量mysql就提示MySQL: ERROR 1040: Too many connections错误了,那么要如何才算是合理设置mysql最大连接数 ...

  2. js_8_dom标签

    创:9_3_2017  星期4 修: 对于在a标签中,如何阻止跳转? 定义一个事件,事件顺序执行后才执行跳转,如果事件函数返回false,则后面事件就不触发 事件1 = "return 函数 ...

  3. JavaScript数组的22种方法

    原文:http://www.cnblogs.com/xiaohuochai/p/5682621.html javascript中数组的22种方法   前面的话 数组总共有22种方法,本文将其分为对象继 ...

  4. OpenCv函数学习(一)

    Intel Image Processing Library (IPL) typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; ...

  5. 在Tomcat中配置连接池和数据源

    1.DataSource接口介绍 (1)DataSource 概述 JDBC1.0原来是用DriverManager类来产生一个对数据源的连接.JDBC2.0用一种替代的方法,使用DataSource ...

  6. Android原生代码与html5交互

    一.首先是网页端,这个就是一些简单的标签语言和JS函数: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&q ...

  7. org.json.JSONObject的optXXX方法

    JSONObject有很多optXXX方法,比如optBoolean,optString,optInt.... 他们的意思是:如果这个JSONObject对象,如果有返回这个属性的值,如果没有返回一个 ...

  8. docker入门(二)容器与镜像的理解

    10张图带你深入理解Docker容器和镜像 申明:此篇文章是转载的(原文地址http://dockone.io/article/783),今天意外发现已经有人转载了(复制了),希望大家关注原创 原本打 ...

  9. 【转】 linux下的awk程序执行

    #!/bin/awk -f awk脚本开头使用这个命令,赋予这个文本文件以执行的权限.这样做之后,你就可以在命令行中用类似于下面这样的方式调用并执行这段awk程序了. BEGIN和END的大括号必须紧 ...

  10. redis数据类型-列表类型

    列表类型 列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段. 列表类型内部是使用双向链表(double linked list)实现的,所以向 ...