第4章 序列的应用

python的数据类型分为:空类型、布尔类型、数字类型、字节类型、字符串类型、元组类型、列表类型、字典类型、集合类型

在python中序列是一块用于存放多个值的连续内存空间。

python内置了5种序列分别是元组、列表、字典、集合、字符串

本章将介绍元组、列表、字典、集合四种序列类型,字符串将在第5章介绍

4.4 字典

字典的特征:

1、通过键而不是通过索引来读取

2、字典是可变的,并且可以任务嵌套

3、字典中的键必须唯一

4、字典中的键必须不可变

5、从3.6版本开始,是有序序列

4.4.1 字典的创建和删除

1、直接使用{}创建字典

dictonary = {"key1":"value1", "key2":"value2", ..., "keyn":"valuen"}
参数说明
dictionary表示字典名称
key1、key2、...keyn表示元素的键,必须唯一
value1、value2、...、valuen表示元素的值,不须唯一
dict1 = {"Monday":"星期一","Tuesday":"星期二","wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期日",}
print(type(dict1))
output:
<class 'dict'>
dictionary = {} # 空字典
dictionary = dict() # 空字典

2、通过映射函数创建字典

dictionary = dict(zip(list1, list2))
参数说明
dictionary表示字典名称
zip()函数用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的zip对象
list1 = ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
list2 = ["Monday","Tuesday","wednesday","Thursday","Friday","Saturday","Sunday"]
dictionary = dict(zip(list1, list2))
print(type(dictionary))
print(dictionary)
output:
<class 'dict'>
{'星期一': 'Monday', '星期二': 'Tuesday', '星期三': 'wednesday', '星期四': 'Thursday', '星期五': 'Friday', '星期六': 'Saturday', '星期日': 'Sunday'}

3、通过给定的关键字参数创建字典

dictionary = dict(key1=value1, key2=value2, ..., keyn=valuen)
dictionary = dict(key1="value1", key2="value2", keyn="valuen")
print(type(dictionary))
print(dictionary)
output:
<class 'dict'>
{'key1': 'value1', 'key2': 'value2', 'keyn': 'valuen'}

4、删除字典

del dictionary
dictionary.clear()
dictionary = dict(key1="value1", key2="value2", keyn="valuen")
del dictionary
print(dictionary)
output:
NameError: name 'dictionary' is not defined
dictionary = dict(key1="value1", key2="value2", keyn="valuen")
dictionary.clear()
print(dictionary)
output:
{}

4.4.2 通过键值对访问字典

1、通过键访问值

ditionary[key]
dict1 = {"Monday":"星期一","Tuesday":"星期二","wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期日",}
print(dict1["Monday"])
output:
星期一

2、通过字典对象的get()方法

dictionary.get(key[,default])
dict1 = {"Monday":"星期一","Tuesday":"星期二","wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期日",}
print(dict1.get("Monday"))
output:
星期一

4.4.3 遍历字典

1、keys()

dict1 = {"Monday":"星期一","Tuesday":"星期二","wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期日",}
for i in dict1.keys():
print(i)
output:
Monday
Tuesday
wednesday
Thursday
Friday
Saturday
Sunday

2、values()

dict1 = {"Monday":"星期一","Tuesday":"星期二","wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期日",}
for i in dict1.values():
print(i)
output:
星期一
星期二
星期三
星期四
星期五
星期六
星期日

3、items()

dict1 = {"Monday":"星期一","Tuesday":"星期二","wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期日",}
for i in dict1.items():
print(i)
output:
('Monday', '星期一')
('Tuesday', '星期二')
('wednesday', '星期三')
('Thursday', '星期四')
('Friday', '星期五')
('Saturday', '星期六')
('Sunday', '星期日')

4.4.4 添加、修改、删除字典元素

dict1 = {"Monday":"星期一","Tuesday":"星期二","wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六",}
# 添加
dict1["Sunday"]="星期日"
print(dict1)
output:
{'Monday': '星期一', 'Tuesday': '星期二', 'wednesday': '星期三', 'Thursday': '星期四', 'Friday': '星期五', 'Saturday': '星期六', 'Sunday': '星期日'}
# 修改
dict1 = {"Monday":"星期一","Tuesday":"星期二","wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期日",}
dict1["Sunday"]="星期天"
print(dict1)
output:
{'Monday': '星期一', 'Tuesday': '星期二', 'wednesday': '星期三', 'Thursday': '星期四', 'Friday': '星期五', 'Saturday': '星期六', 'Sunday': '星期天'}
# 删除
dict1 = {"Monday":"星期一","Tuesday":"星期二","wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期日",}
del dict1["Sunday"]
# 如果要删除的元素不存在,会抛出异常,可以先做个判断
dict1 = {"Monday":"星期一","Tuesday":"星期二","wednesday":"星期三","Thursday":"星期四","Friday":"星期五","Saturday":"星期六","Sunday":"星期日",}
if "Sunday" in dict1:
del dict1["Sunday"]
print(dict1)
output:
{'Monday': '星期一', 'Tuesday': '星期二', 'wednesday': '星期三', 'Thursday': '星期四', 'Friday': '星期五', 'Saturday': '星期六'}

4.4.5 字典推导式

import random
randomdict = {i:random.randint(10,100) for i in range(1,5)}
print("生成的字典为:",randomdict)
output:
生成的字典为: {1: 41, 2: 40, 3: 45, 4: 10}
# 拓展:值最大的字典
def max_pairs(dic):
if len(dic) == 0:
return dic
max_val = max(map(lambda v: v[1], dic.items()))
return [item for item in dic.items() if item[1] == max_val] r = max_pairs({'a': -10, 'b': 5, 'c': 3, 'd': 5})
print(r) # [('b', 5), ('d', 5)]
# 拓展:合并两个字典
def merge_dict2(dic1, dic2):
return {**dic1, **dic2} # python3.5后支持一行代码实现合并字典 merge_dict({'a': 1, 'b': 2}, {'c': 3}) # {'a': 1, 'b': 2, 'c': 3}

敬请关注个人微信公众号:测试工匠麻辣烫

Python3笔记019 - 4.4 字典的更多相关文章

  1. python3笔记目录大纲汇总

    篇一.python3基础知识和语句 python3笔记一:python基础知识 python3笔记二:进制转换与原码反码补码 python3笔记三:运算符与表达式 python3笔记四:if语句 py ...

  2. python学习笔记(一)元组,序列,字典

    python学习笔记(一)元组,序列,字典

  3. python3笔记十二:python数据类型-Dictionary字典

    一:学习内容 字典概念 字典创建 字典访问 字典添加 字典删除 字典遍历 字典与列表比较 二:字典概念 1.使用键值对(key-value)存储,具有极快的查找速度 2.注意:字典是无序的 3.特性: ...

  4. python3笔记十八:python列表元组字典集合文件操作

    一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle  #数据持久性模块 #封装的方法def OptionData(data,path):    # ...

  5. python3笔记-字典

    5 1 # 创建字典 6 2 d=dict(name='lily',age=18,phone='') 7 3 print(d) 4 # {'name': 'lily', 'age': 18, 'pho ...

  6. Python 笔记(一)字典与json使用及注意点

    个人笔记系列,随便参考 1.python 中字典与json的差别 字典的生成 >>> a = dict(one=1, two=2, three=3) >>> b = ...

  7. 从零开始学习PYTHON3讲义(九)字典类型和插入排序

    <从零开始PYTHON3>第九讲 第六讲.上一讲我们都介绍了列表类型.列表类型是编程中最常用的一种类型,但也有挺明显的缺陷,比如: data = [5,22,34,12,87,67,3,4 ...

  8. 小甲鱼Python3笔记

    000-愉快的开始 入门容易,学习难,代码量少. 跨平台: Windows, Mac OS, Linux, UNIX. 应用领域: 操作系统 WEB 3D动画 企业应用 云计算等等. 001-我和Py ...

  9. python3笔记(二)Python语言基础

    缩进 要求严格的代码缩进是python语法的一大特色,就像C语言家族(C.C++.Java等等)中的花括号一样重要,在大多数场合还非常有必要.在很多代码规范里面也都有要求代码书写按照一定的规则进行换行 ...

随机推荐

  1. java代码(3)----guava复写Object常用方法

    guava复写Object常用方法 Guava是一个Google的基于java1.6的类库集合的扩展项目,这个库提供用于集合,缓存,支持原语,并发性,字符串处理,I/O和验证的实用方法, 这些高质量的 ...

  2. Netty源码学习系列之4-ServerBootstrap的bind方法

    前言 今天研究ServerBootstrap的bind方法,该方法可以说是netty的重中之重.核心中的核心.前两节的NioEventLoopGroup和ServerBootstrap的初始化就是为b ...

  3. Netty源码学习系列之1-netty的串行无锁化

    前言 最近趁着跟老东家提离职之后.到新公司报道之前的这段空闲时期,着力研究了一番netty框架,对其有了一些浅薄的认识,后续的几篇文章会以netty为主,将近期所学记录一二,也争取能帮未对netty有 ...

  4. MIT6.S081/6.828 实验1:Lab Unix Utilities

    Mit6.828/6.S081 fall 2019的Lab1是Unix utilities,主要内容为利用xv6的系统调用实现sleep.pingpong.primes.find和xargs等工具.本 ...

  5. mysql数据库-mysql数据定义语言DDL (Data Definition Language)归类(六)

    0x01 创建数据库并指定字符集和排序规则 -- 三种实例写法 create database temptab2 character set utf8 collate utf8_general_ci; ...

  6. yum安装配置MySQL数据库

    1.配置yum源 # 先安装wget yum install wget -y     2.下载mysql源安装包 wget http://dev.mysql.com/get/mysql57-commu ...

  7. 96题--不同的二叉搜索树(java、中等难度)

    题目描述:给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例如下: 分析:本题可用动态规划的方法求解. 设 dp[n] 表示以 1 ... n 为节点组成的二叉搜索树的种类 ...

  8. Prometheus监控Docker Swarm集群(一)

    Prometheus监控Docker Swarm集群(一) cAdvisor简介 为了解决容器的监控问题,Google开发了一款容器监控工具cAdvisor(Container Advisor),它为 ...

  9. Email地址验证

    <script>function validateForm(){ var x=document.forms["myForm"]["email"].v ...

  10. java并发编程系列原理篇--JDK中的通信工具类Semaphore

    前言 java多线程之间进行通信时,JDK主要提供了以下几种通信工具类.主要有Semaphore.CountDownLatch.CyclicBarrier.exchanger.Phaser这几个通讯类 ...