文章目录

  • 一、字典Dict
  • 二、字典相关操作
    • 1.创建字典
    • 2.访问字典
    • 3.增加和修改
    • 4.删除字典元素、清空字典和删除字典
    • 5.字典的重要方法
    • 6.遍历字典

一、字典Dict

Python 的字典数据类型是基于 hash 散列算法实现的,采用键值对(key:value)的形式,
根据 key 的值计算 value 的地址,具有非常快的查取和插入速度。
字典是无序的,包含的元素个数不限,值的类型也可以是其它任何数据类型!
字典的 key 必须是不可变的对象,例如整数、字符串、bytes 和元组,但使用最多的还
是字符串。列表、字典、集合等就不可以作为 key。同时,同一个字典内的 key 必须是
唯一的,但值则不必。
字典可精确描述为不定长、可变、无序、散列的集合类型。
字典的每个键值对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})
中 ,例如:
dic = {key1 : value1, key2 : value2 }

二、字典相关操作

1.创建字典

方式一: 直接创建

>>> dic1 = {'name': 'Tom', 'age': 40}

方式二: 动态创建

>>> dic2 = {}
>>> dic2['name'] = 'Tom'
>>> dic2['age'] = 40

方式三: 关键字创建

>>> dic3 = dict(name='Tom', age=40)

方式四: 键/值对创建

>>> dic4 = dict((['name', 'Tom'], ['age', 40]))
>>> dic4

方式五: 通过 fromkeys 方法来创建

>>> dic5 = dict.fromkeys(['a', 'b'], 0)
>>> dic5

方式六: zip 创建字典

>>> dic6 = dict(zip(['a', 'b'], [1, 2]))
>>> dic6

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然
后返回由这些元组组成的对象。我们可以使用 list() 转换来输出列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
利用 * 号操作符,可以将元组解压为列表。

2.访问字典

字典是集合类型,不是序列类型,因此没有索引下标的概念,更没有切片的说法。字典
采用把相应的键放入方括号内获取对应值的方式取值。

dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
print ("dic['Name']: ", dic['Name'])
print ("dic['Age']: ", dic['Age'])

如果访问字典里没有的键,会抛出异常:

>>> dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
>>> dic["address"]
Traceback (most recent call last):File "<pyshell#7>", line 1, in <module>dic["address"]
KeyError: 'address'

3.增加和修改

增加就是往字典插入新的键值对,修改就是给原有的键赋予新的值。由于一个 key 只能
对应一个值,所以,多次对一个 key 赋值,后面的值会把前面的值冲掉。

>>> dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
>>> dic["address"] = "Shanghai"
>>> dic["address"] = "Beijing"
>>> dic["Age"] = 18
>>> dic
{'Name': 'Jack', 'Age': 18, 'Class': 'First', 'address': 'Beijing'}

要统计字典内键的个数,可以使用 Python 内置的 len()函数:

dic = {'Name': 'Jack','Age': 7, 'Class': 'First'}
>>> len(dic)

4.删除字典元素、清空字典和删除字典

使用 del 关键字删除字典元素或者字典本身,使用字典的 clear()方法清空字典。

>>> dic
{'Name': 'Jack', 'Age': '20', 'Class': 'First', 'sex': 'male'}
>>> del (dic['Name']) # 删除指定的键
>>> dic
{'Age': '20', 'Class': 'First', 'sex': 'male'}
>>> a = dic.pop('Class') # 弹出并返回指定的键
>>> a
'First'
>>> dic
{'Name': 'Jack', 'Age': 7}
>>> dic.clear() # 清空字典
>>> dic
{}
>>> del (dic) # 删除字典本身
>>> dic
Traceback (most recent call last):File "<pyshell#20>", line 1, in <module>dic
NameError: name 'dic' is not defined

5.字典的重要方法

下表中列出了字典的重要内置方法。其中的 get、items、keys 和 values 是核心中的核
心,必须熟练掌握!

方法 作用
clear() 删除字典内所有元素
copy() 返回一个字典的浅复制
fromkeys() 创建一个新字典,以序列 seq 中元素做字典的键
get(key) 返回指定键的值,如果值不在字典中,则返回default 值
items() 以列表返回可遍历的(键, 值) 元组对
keys() 以列表返回字典所有的键
values() 以列表返回字典所有的值
pop(key) 删除并返回指定 key 的值
popitem() 随机删除并返回字典内某个键的值
setdefault(key, default=None) 和 get()类似,但如果键不存在于字典中,将会添加键并将值设为 default
update(dict2) 把字典 dict2 的键/值对更新到 dict 里

6.遍历字典

遍历字典获得的键值对是随机无序的!以下的遍历方法必须全部熟练掌握。

dic = {'Name': 'Jack', 'Age': 7, 'Class': 'First'}
# 1 直接遍历字典获取键,根据键取值
for key in dic:print(key, dic[key])
# 2 利用 items 方法获取键值,速度很慢,少用!
for key,value in dic.items():print(key,value)
#3 利用 keys 方法获取键
for key in dic.keys():print(key, dic[key])
#4 利用 values 方法获取值,但无法获取对应的键。
for value in dic.values():print(value)

【愚公系列】2021年12月 Python教学课程 07-字典Dict相关推荐

  1. 【愚公系列】2021年12月 Python教学课程 01-全方位解读Python

    文章目录 一.python简介 二.python起源 三.Python 的发展趋势 四.Python 语言的特点 1. 简单易学.明确优雅.开发速度快 2. 跨平台.可移植.可扩展.交互式.解释型.面 ...

  2. 【愚公系列】2021年12月 Python教学课程 04-字符串

    文章目录 一.字符串类型 str 1 字符串类型的定义 2 字符串的运算: 3 Python 转义字符: 4 "多行字符串" 5 字符串内置方法 6 格式化方法 7 字符串颜色控制 ...

  3. 【愚公系列】2021年12月 Python教学课程 17-模块与包

    文章目录 一. 什么是模块 二. 模块的使用 1. import xx.xx 2. from xx.xx import xx.xx 3. from xx.xx import xx as rename ...

  4. 【愚公系列】2021年12月 Python教学课程 14-递归函数

    文章目录 一.递归函数 一.递归函数 我们在前面的章节中,很多次的看到了在函数中调用别的函数的情况.如果一个函数在内部调用了自身,这个函数就被称为递归函数. What?函数可以自己调用自己?那不是成为 ...

  5. 【愚公系列】2021年12月 Python教学课程 19-面向对象编程-面向对象定义

    文章目录 一. 什么是面向对象编程 总结 一. 什么是面向对象编程 面向对象编程:Object Oriented Programming,简称 OOP,是一种程序设计方法.OOP 把对象作为程序的基本 ...

  6. 【愚公系列】2021年12月 Java教学课程 14-流程控制语句之while循环

    文章目录 一.while循环 1.循环语句-while循环 2.while循环案例-珠穆朗玛峰 3.循环语句-dowhile循环 一.while循环 1.循环语句-while循环 while循环完整格 ...

  7. 【愚公系列】2021年12月 Java教学课程 38-Lambda表达式

    文章目录 一.Lambda表达式 1.体验Lambda表达式 2.Lambda表达式的标准格式 3.Lambda表达式练习1 4.Lambda表达式练习2 5.Lambda表达式练习3 6.Lambd ...

  8. 【愚公系列】2021年12月 Java教学课程 31-继承详解

    文章目录 一.继承详解 1. 继承 1.1 继承的实现(掌握) 1.2 继承的好处和弊端(理解) 1.3. Java中继承的特点(掌握) 2. 继承中的成员访问特点 2.1 继承中变量的访问特点(掌握 ...

  9. 【愚公系列】2021年12月 Java教学课程 34-接口

    文章目录 一接口 1.接口的概述 2.接口的特点 3.接口的成员特点 4.类和接口的关系 一接口 1.接口的概述 接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用. Java中接口存在的两 ...

最新文章

  1. Vuex-全局状态集中式管理神器,做vue项目不知道Vuex真的out了
  2. ICML 2021文章引发热议:矩阵乘法无需相乘,速度提升100倍
  3. C# 中 System.Range 结构体
  4. CC2540 串口0 通道2配置
  5. 用SQL语句查看数据库数据量的大小
  6. nginx第三方模块---nginx-sticky-module的使用(基于cookie的会话保持)
  7. 产品经理做产品设计的九步法
  8. SSL-Explorer 安装配置
  9. 基于Python的SVM算法深入研究
  10. python怎么输出文件_python如何输出文件内容
  11. 《麦肯锡方法》第四部分 麦肯锡生存之道 第17-19章-思维导图
  12. 西门子g120变频器接线图_西门子1500PLC通过工艺对象对G120变频器组态和调试
  13. 设计MP3网页音乐播放器
  14. 报表工具对比选型系列用例——排名及跨行组统计
  15. vue 微信公众号定位+高德地图
  16. mysql优化的魅力,从20s优化到500ms,仅需三招(荣耀典藏版)
  17. ucloud中的udisk错误“Read-only file system”修复指南
  18. 一些时间的概念与区分(UTC、GMT、LT、TAI等)
  19. 100天精通Python(数据分析篇)——第51天:numpy模块常用函数大全(字符串/数学/算术/统计/排序/搜索函数)
  20. STM32外设配置—什么时候需要开启AFIO时钟?

热门文章

  1. 软件工程:什么样的公司需要专职测试
  2. 讲解为什么会提示“invalid type argument of ‘->‘ (have ‘Data_Ao‘)”错误信息
  3. ARP绑定IP与MAC地址
  4. 操作系统和Linux发展
  5. css文字自动横向排列,css代码横向排列怎样自动适应宽度?
  6. 无法启动此程序,因为计算机中丢失api-ms-win-crt-locale-l1-1-0.dll,尝试重新安装此程序以解决此问题
  7. 3d建模师前景如何,想要做到月薪六千多难不难?
  8. 6splus计算机按键应用,iPhone 6s/6s Plus实用技巧:用小白点锁屏
  9. 16090202(剑灵GPA)
  10. 学习Qss--字体、文本属性