前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python - 基础数据类型 dict 字典

Python - 基础数据类型 dict 字典

作者头像
小菠萝测试笔记
发布于 2021-08-06 02:27:51
发布于 2021-08-06 02:27:51
45800
代码可运行
举报
运行总次数:0
代码可运行

字典简介

  • 字典在 Python 里面是非常重要的数据类型,而且很常用
  • 字典是以关键字(键)为索引,关键字(键)可以是任意不可变类型
  • 字典由键和对应值成对组成,字典中所有的键值对放在 { } 中间,每一对键值之间用逗号分开

字典栗子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var = {'a': 'A', 'b': 'B', 'c': 'C'}

字典中包含 3 个键值对

  • 键 ‘a’ 的值是 ‘A’
  • 键 ‘b’ 的值是 ‘B’
  • 键 ‘c’ 的值是 ‘C’
字典通常用于描述对象的各种属性

例如一本书,有书名、作者名、出版社等各种属性,可以使用字典描述如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
book = {
    'title': 'Python 入门基础',
    'author': '张三',
    'press': '机械工业出版社'
}

键的取值规则

  • 可以是任意不可变类型
  • 通常是字符串或数字
  • 如果一个元组只包含字符串、数字或元组,那么这个元组也可以用作键
  • 但如果元组直接或间接地包含了可变对象,那么它就不能用作键
  • 列表不能用作键

声明一个空字典

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 空字典
dict_ = {}
print(dict_,type(dict_))

dict_ = dict()
print(dict_,type(dict_))


# 输出结果
{} <class 'dict'>
{} <class 'dict'>

读取字典

两种方式

  • 通过索引 key
  • 通过 .get(key) 方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
book = {
    'title': 'Python 入门基础',
    'author': '张三',
    'press': '机械工业出版社'
}

print(book["title"])
print(book["author"])
print(book.get("press"))
print(book.get("a")) 

两种方式有啥区别?

  • .get(key) 当 key 不存在的时候会返回 None
  • key 如果 key 不存在则会报错

KeyError: 'authors'

修改字典

两种方式

  • 通过索引 key 赋值
  • 通过 .update() 方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 修改字典
book = {
    'title': 'Python 入门基础',
    'author': '张三',
    'press': '机械工业出版社'
}

book["author"] = "小菠萝"
print(book)

book.update({"title": "新书"})
print(book)


# 输出结果
{'title': 'Python 入门基础', 'author': '小菠萝', 'press': '机械工业出版社'}
{'title': '新书', 'author': '小菠萝', 'press': '机械工业出版社'}

在字典中增加键值对

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 新加键值对
book = {
    'title': 'Python 入门基础',
    'author': '张三',
    'press': '机械工业出版社'
}
book["money"] = 22
print(book)


# 输出结果
{'title': 'Python 入门基础', 'author': '张三', 'press': '机械工业出版社', 'money': 22}

在字典中删除键值对

两种方式

  • 通过关键字 del
  • 通过 .pop(key)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 删除键值对
book = {
    'title': 'Python 入门基础',
    'author': '张三',
    'press': '机械工业出版社'
}

del book["press"]
print(book)

print(book.pop("author"))
print(book)


# 输出结果
{'title': 'Python 入门基础', 'author': '张三'}
张三
{'title': 'Python 入门基础'}

查询字典

通过关键字 in 检查字典中是否包含指定键

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# in
book = {
    'title': 'Python 入门基础',
    'author': '张三',
    'press': '机械工业出版社'
}

print("title" in book)
print("titles" in book)
print("张三" in book)


# 输出结果
True
False
False

常见函数

len

获取字典中键值对的数量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# len
var = {'a': 'A', 'b': 'B', 'c': 'C'}
print(len(var))


# 输出结果
3
list

返回包含该字典中所有键的列表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# list
book = {
    'title': 'Python 入门基础',
    'author': '张三',
    'press': '机械工业出版社'
}
print(list(book))


# 输出结果
['title', 'author', 'press']
  • 这个返回结果是无序的
  • tuple() 一样也可以这样哦,返回的是键组成的元组
sorted

返回包含该字典中所有键的有序列表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# sorted
book = {
    'title': 'Python 入门基础',
    'author': '张三',
    'press': '机械工业出版社'
}
print(sorted(book))


# 输出结果
['author', 'press', 'title']

dict() 创建字典对象详解

重点

dict 是一个类,而不是函数

源码

从源码注释来看,dict 有四种传参方式,下面将一一举例

创建空字典
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建空字典
dict1 = dict()
print(dict1)


# 输出结果
{}
通过 iterable 创建字典
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 传递 list 来创建字典
mid = [("a", 1), ("b", 2)]
dict2 = dict(mid)
print(dict2)


# 输出结果
{'a': 1, 'b': 2}

iterable 的详解:https://cloud.tencent.com/developer/article/1814243

通过关键字参数创建字典
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 传递关键字参数来创建字典
dict3 = dict(name="yy", age=24)
print(dict3)


# 输出结果
{'name': 'yy', 'age': 24}
通过另一个字典对象创建字典
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mid = {"title": [1, 2, 3]}
# 相当于浅拷贝
dict4 = dict(mid)

print(dict4)
print(id(mid), id(dict4))

mid["name"] = "test"
mid["title"][1] = 1

print(mid, dict4)


# 输出结果
{'title': [1, 2, 3]}
4498981760 4500413824
{'title': [1, 1, 3], 'name': 'test'} {'title': [1, 1, 3]}

这种传参方式相当于浅拷贝,新的字典对象和旧的字典对象并不指向同一个对象引用

假设直接用赋值的方式,因为字典是可变对象,所以新旧字典对象都会指向同一个对象引用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dict1 = {1: 1}
dict2 = dict1
print(id(dict1), id(dict2))


# 输出结果
4355281792 4355281792

所以,当想复制一个新的字典对象但是又不想指向同一个对象引用的话,最好还是使用 dict() 的方式

字典常见方法

https://cloud.tencent.com/developer/article/1857020

遍历字典的多种方式

https://cloud.tencent.com/developer/article/1857018

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python - dict 字典常见方法
https://www.cnblogs.com/poloyy/p/15083781.html
小菠萝测试笔记
2021/08/06
2030
Python - dict 字典的多种遍历方式
for 循环详解:https://www.cnblogs.com/poloyy/p/15087053.html
小菠萝测试笔记
2021/08/06
4170
Python - 字典
     字典是无序可变的对象集合 ,字典当中的元素是通过键来存取的,而不是通过偏移存取。字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
似小陈吖
2023/10/17
2110
Python基础语法-基本数据类型-字典的常用操作
在上面的示例代码中,我们首先定义了一个字典 dict1,然后使用 len() 函数获取字典中键值对的数量,并使用 in 关键字判断某个键是否在字典中。接着,我们使用 clear() 方法清空了字典中的所有元素,并使用 copy() 方法复制了一个字典。然后,我们使用 get() 方法根据键获取对应的值,如果键不存在则返回默认值。最后,我们使用 setdefault() 方法获取指定键的值,如果键不存在则设置一个默认值并返回。
玖叁叁
2023/04/16
2590
Python数据类型(字典-Dictionary)_005
字典类型是 Python 中唯一的映射类型(通过一个元素,可以唯一找到另一个元素)
留给昨天、
2024/10/30
1100
2022年最新Python大数据之Python基础【五】(字典)
Maynor
2023/10/13
1760
python 字典dict
前面的课程讲解了字符串str/列表list/元组tuple,还有最后一种比较重要的数据类型也需要介绍介绍,那就是python字典,俗称:dict.
猿说编程[Python和C]
2020/02/26
1.3K0
python 字典dict
python 字典dict
# -*- coding: utf-8 -*- # ****************************** 创建 *************************** dict1 = {} #定义1个元素的字典 dict2 = {'pi': 3.14} print(dict2)  #{'pi': 3.14} dict3 = {1: 2} print(dict3)  #{1: 2} dict4 = dict([[1, 2], ('a', 'b')]) print(dict4)  #{'a': 
py3study
2020/01/13
5000
python基础之字典的更新复制
  在实际开发过程中,我们会遇到需要将相关数据关联起来的情况,例如,处理学生的学号、姓名、年龄、成绩等信息。另外,还会遇到需要将一些能够确定的不同对象看成一个整体的情况。Python提供了字典和集合这两种数据结构来解决上述问题。这里介绍一下python字典的更新复制相关知识。
jiankang666
2022/06/22
6560
python基础之字典的更新复制
Python教程(三):基础数据类型
Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
山禾说
2019/01/21
6380
Python 字典(Dictionary)
Python 字典(Dictionary) 字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示: d = {key1 : value1, key2 : value2 } 键(key)必须是唯一的,但值(value)则可以更改。 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。 一个简单的字典实例: dic = {'name':'zhang', 'age':'28
老七Linux
2018/05/09
2.4K0
Python字典构造函数formkeys()与dict()
Python中的字典在其他语言中有不同的称呼,比如JS中叫做对象,PHP中叫做数组等等,各有各的称呼,但是个人觉得字典这个名称比较合适,字典反映了这种数据类型的特性,表示通过某个值去查找另一个值。python中的字典就是通过一个键查找一个值,在后面的数据库的表对象查找的时候也是使用类似的方法,JSON数据的查找也是类似方法......
python自学网
2021/12/02
4940
Python字典构造函数formkeys()与dict()
Python 基础(字典)
键:只能是不可变数据类型,一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一
数据STUDIO
2021/06/24
4700
2022年最新Python大数据之Python基础【五】
文章目录 1、列表的查询 2、列表的增加 3、列表中的删除 4、列表的修改 5、列表遍历 6、列表的嵌套 7、元组的定义 8、元组的相关操作 9、字典的定义 10、字典的增加 11、字典的删除 12、字典的修改 13、字典的查询 14、字典的遍历 15、集合的定义 16、集合的相关操作 1、列表的查询 index:从左至右查询元素在列表中所处的位置,如果查询到该元素返回其第一次出现所在位置的正向下标,如果不存在则报错 count:查询指定元素在列表中出现的次数 in:查询指定元素是否在列表中 not in:
Maynor
2022/08/15
3.4K0
Python3 字典
字典是另一种可变容器模型,且可存储任意类型对象。 字典是以键/值对来存储数据的一种可变容器,所谓可变即是说容器的大小可以改变,并且其中的元素可以进行修改或删除,如果熟悉Java的人就知道python的字典类似于Java的hashtable集合,字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号( , )分割,整个字典包括在大括号 { } 中,和JSON的格式有点类似 ,声明格式如下所示:
端碗吹水
2020/09/23
4740
Python: dict字典的方法介绍
文章背景: 字典(dict)是Python中一个重要的数据类型。下面打算对dict的内置方法进行介绍。
Exploring
2022/09/20
9900
Python:  dict字典的方法介绍
python字典dict方法_python中dict的用法
Python字典是另一种可变容器模型,可存储任意类型对象。如字符串、数字、元组等其他容器模型 因为字典是无序的所以不支持索引和切片。
全栈程序员站长
2022/11/08
1.2K0
python字典dict方法_python中dict的用法
Python学习笔记之字典dict的用法
Python中的字典,和 json 串类似。 键值对的键值用冒号分开,键值对之间使用逗号分隔,整个字典用大括号括起来。 没有任何元素的用两个花括号表示。
青山师
2023/05/05
3190
python入门——python数据类型
在python中,列表用方括号[ ],来表示列表。作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型。
py3study
2020/01/03
1.8K0
Python字典详细操作
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
Yuou
2022/09/26
5320
相关推荐
Python - dict 字典常见方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验