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. Git-远程仓库的使用

    Git修改远程仓库地址 1.修改命令 git remote set-url origin [url] 例如:$ git remote set-url origin gitlab@gitlab.chum ...

  2. scrapy_移除内容中html标签

    如何移除所获取内容中多余的html标签? 通过w3lib模块和re模块 #!/usr/bin/python3 # -*- coding: UTF-8 -*- __author__ = 'beimenc ...

  3. Nginx的安装(笔记)

    0, 先决条件Nginx 依赖 zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre安装命令:yum -y install make z ...

  4. 文件A包含文件B,找出A不包含B的那部分

    文件A: a f b e c d 文件B: b c a 目的:A包含B,找出A中有但B中没有的部分 代码: 首先利用dos2unix命令将windows文件转换为unix文件 dos2unix a.t ...

  5. 【视频编解码·学习笔记】5. NAL Unit 结构分析

    在上篇笔记中通过一个小程序,可以提取NAL Unit所包含的的字节数据.H.264码流中的每一个NAL Unit的作用并不是相同的,而是根据不同的类型起不同的作用.下面将对NAL Unit中的数据进行 ...

  6. 计算机中RAM和ROM

    1.RAM(RamdomAccessMemory): 易挥发性随机存取存储器,高速存取,读写时间相等,且与地址无关,如计算机内存等. 2.ROM(Read Only Memory): 只读存储器.断电 ...

  7. 创建分模块的maven项目

    折腾了我2天的maven,整理一下,以后做个参考 一.什么是maven项目: Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. Maven ...

  8. 只用120行Java代码写一个自己的区块链

    区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的.这篇文章就是帮助你使用 Java 语言来实现一个简单的区块链,用不到 120 行代码来揭示区 ...

  9. php5.3 安装 Zend Guard Loader

    解包 tar -zxvf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz 复制 ZendGuardLoader.so 至 PHP 扩展目录 cp ...

  10. Springboot security cas源码陶冶-FilterSecurityInterceptor

    前言:用户登录信息校验成功后,都会获得当前用户所拥有的全部权限,所以对访问的路径当前用户有无权限则需要拦截验证一发 Spring security过滤器的执行顺序 首先我们需要验证为啥FilterSe ...