第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实现 洛谷 P1056 排座椅

    import java.util.Arrays; import java.util.Map.Entry; import java.util.Scanner; import java.util.Tree ...

  2. PAT 到底买不买

    小红想买些珠子做一串自己喜欢的珠串.卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖.于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子 ...

  3. zabbix 邮箱告警

    脚本内容 #!/bin/env python #coding:utf- import smtplib from email.mime.text import MIMEText from sys imp ...

  4. go语言实现"生产者"和"消费者"的例子

    学习java的多线程的时候最经典的一个例子就是生产者消费者模型的例子,最近在研究go语言协程,发现go提供的sync包中有很多和java类似的锁工具,尝试着用锁工具配合协程实现一个"消费者& ...

  5. 实战记录之SQL server报错手工注入

    前言 最近测试了一个站点,这个站点挺有意思,发现没有关闭错误提示,初步猜测是SQL server数据库,后来验证确实是.在这里记录一下实战过程,并详细讲解一下用到的知识点. SQL server报错注 ...

  6. Vue可响应式数组方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Windows下C,C++开发环境搭建指南

    Windows下C,C++开发环境搭建指南 前情提要 基于近一段时间很多网友发邮件反馈,说一些项目编译出现问题,诸如此类的情况. 就觉得很有必要写一篇C,C++开发环境的小指南,统一回复. 1.君欲善 ...

  8. Java——选择、冒泡排序、折半查找

    //选择排序对数据进行升序排序 public static void selectSortArray(int[] arr){ for(int i = 0; i<arr.length-1;i++) ...

  9. 素数筛 : Eratosthenes 筛法, 线性筛法

    这是两种简单的素数筛法, 好不容易理解了以后写篇博客加深下记忆 首先, 这两种算法用于解决的问题是 : 求小于n的所有素数 ( 个数 ) 比如 这道题 在不了解这两个素数筛算法的同学, 可能会这么写一 ...

  10. 2019-01-31 Python学习之BFS与DFS实现爬取邮箱

    今天学习了python网络爬虫的简单知识 首先是一个爬取百度的按行读取和一次性爬取 逐行爬取 for line in urllib.request.urlopen("http://www.b ...