字典简介

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

字典栗子

var = {'a': 'A', 'b': 'B', 'c': 'C'}

字典中包含 3 个键值对

  • 键 ‘a’ 的值是 ‘A’
  • 键 ‘b’ 的值是 ‘B’
  • 键 ‘c’ 的值是 ‘C’

字典通常用于描述对象的各种属性

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

book = {
'title': 'Python 入门基础',
'author': '张三',
'press': '机械工业出版社'
}

键的取值规则

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

声明一个空字典

# 空字典
dict_ = {}
print(dict_,type(dict_)) dict_ = dict()
print(dict_,type(dict_)) # 输出结果
{} <class 'dict'>
{} <class 'dict'>

读取字典

两种方式

  • 通过索引 [ key ]
  • 通过 .get(key) 方法
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() 方法
# 修改字典
book = {
'title': 'Python 入门基础',
'author': '张三',
'press': '机械工业出版社'
} book["author"] = "小菠萝"
print(book) book.update({"title": "新书"})
print(book) # 输出结果
{'title': 'Python 入门基础', 'author': '小菠萝', 'press': '机械工业出版社'}
{'title': '新书', 'author': '小菠萝', 'press': '机械工业出版社'}

在字典中增加键值对

# 新加键值对
book = {
'title': 'Python 入门基础',
'author': '张三',
'press': '机械工业出版社'
}
book["money"] = 22
print(book) # 输出结果
{'title': 'Python 入门基础', 'author': '张三', 'press': '机械工业出版社', 'money': 22}

在字典中删除键值对

两种方式

  • 通过关键字 del
  • 通过 .pop(key)
# 删除键值对
book = {
'title': 'Python 入门基础',
'author': '张三',
'press': '机械工业出版社'
} del book["press"]
print(book) print(book.pop("author"))
print(book) # 输出结果
{'title': 'Python 入门基础', 'author': '张三'}
张三
{'title': 'Python 入门基础'}

查询字典

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

# in
book = {
'title': 'Python 入门基础',
'author': '张三',
'press': '机械工业出版社'
} print("title" in book)
print("titles" in book)
print("张三" in book) # 输出结果
True
False
False

常见函数

len

获取字典中键值对的数量

# len
var = {'a': 'A', 'b': 'B', 'c': 'C'}
print(len(var)) # 输出结果
3

list

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

# list
book = {
'title': 'Python 入门基础',
'author': '张三',
'press': '机械工业出版社'
}
print(list(book)) # 输出结果
['title', 'author', 'press']
  • 这个返回结果是无序的
  • tuple() 一样也可以这样哦,返回的是键组成的元组

sorted

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

# sorted
book = {
'title': 'Python 入门基础',
'author': '张三',
'press': '机械工业出版社'
}
print(sorted(book)) # 输出结果
['author', 'press', 'title']

dict() 创建字典对象详解

重点

dict 是一个类,而不是函数

源码

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

创建空字典

# 创建空字典
dict1 = dict()
print(dict1) # 输出结果
{}

通过 iterable 创建字典

# 传递 list 来创建字典
mid = [("a", 1), ("b", 2)]
dict2 = dict(mid)
print(dict2) # 输出结果
{'a': 1, 'b': 2}

iterable 的详解:https://www.cnblogs.com/poloyy/p/14658433.html

通过关键字参数创建字典

# 传递关键字参数来创建字典
dict3 = dict(name="yy", age=24)
print(dict3) # 输出结果
{'name': 'yy', 'age': 24}

通过另一个字典对象创建字典

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]}

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

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

dict1 = {1: 1}
dict2 = dict1
print(id(dict1), id(dict2)) # 输出结果
4355281792 4355281792

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

字典常见方法

https://www.cnblogs.com/poloyy/p/15084264.html

遍历字典的多种方式

https://www.cnblogs.com/poloyy/p/15084302.html

Python - 基础数据类型 dict 字典的更多相关文章

  1. python基础数据类型--dict 字典

    字典 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必 ...

  2. Python基础数据类型之字典

      基础数据类型之字典 ps:数据类型划分:可变数据类型和不可变数据类型. 不可变数据类型:元组(tupe).布尔值(bool).整数型(int).字符串(str).不可变数据类型也称为可哈希. 可变 ...

  3. python基础(六)dict字典和文件操作open

    字典dict 使用key来标注value的数据类型,key和value是一一对应的.在字典中key是唯一的,所以字典也是无序的. #定义一个字典 dict = { 'name' : 'sylar', ...

  4. python基础数据类型之字典的操作

    一. 字典的简单介绍字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是唯一的. 在保存的时候, 根据key来计算出一个内存地址. 然后将key- ...

  5. Python基础数据类型-字典(dict)

    Python基础数据类型-字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟 ...

  6. 『Python基础-10』字典

    # 『Python基础-10』字典 目录: 1.字典基本概念 2.字典键(key)的特性 3.字典的创建 4-7.字典的增删改查 8.遍历字典 1. 字典的基本概念 字典一种key - value 的 ...

  7. Python基础知识(五)------字典

    Python基础知识(四)------字典 字典 一丶什么是字典 ​ dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 ​ 键: 必须是可哈希,(不可变的数据类型 ...

  8. Python 入门之Python基础数据类型及其方法

    Python 入门之Python基础数据类型 1. 整型:int 用于计算,用于比较 (在赋值的时候先执行等号右边的内容) 1.1 整数的加 a = 10 b = 20 print(a + b) 结果 ...

  9. 图解python | 基础数据类型

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...

随机推荐

  1. JDK并发包二

    JDK并发包二 线程复用--线程池 在线程池中,总有那么几个活跃的线程,当程序需要线程时可以从池子中随便拿一个控线程,当程序执行完毕,线程不关闭,而是将这个线程退会到池子,等待使用. JDK提供了一套 ...

  2. Spring Data JPA的Audit功能,审计数据库的变更

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 数据库审计 数据库审计是指当数据库有记录变更时,可以记录数据库的变更时间和变更人等,这样以后出问题回溯问责也比较方便. ...

  3. Java-Lambda相关使用介绍

    频繁使用的语句   Lambda又涉及到comparator和comparable区别(Comparable是实现comparable接口,实现后可以使用Collections.sort或Arrays ...

  4. beego搭建api服务

    beego介绍 beego是一个Golang实现的开源Go应用开发框架,他可以用来快速开发 API.Web 及后端服务等各种应用,是一个 RESTful的框架,主要设计灵感来源于tornado.sin ...

  5. excel VBA返回选中单元格区域的行数、列数,以及活动单元格的行号和列号

    Private Sub Worksheet_SelectionChange(ByVal Target As Range) '可以直接sub(),不然选择就会触发vba    Dim rows_coun ...

  6. Kubernetes使用节点污点和pod容忍度阻止节点调度到特定节点

    Kubernetes允许你去影响pod被调度到哪个节点.起初,只能通过在pod规范里指定节点选择器来实现,后面其他的机制逐渐加入来扩容这项功能,本章将包括这些内容. 现在要介绍的高级调度的两个特性是节 ...

  7. Redis的bitmap从基础到业务

    1. 位与字节 1个字节(byte)等于8个位(bit).(计算机常识). 2. string与bitmap Redis里的bitmap是属于string这个数据类型里的.可以help进行查看bit相 ...

  8. SpringCloud:路由ZUUL的配置详解

    以下是两种配置文件的配置方式,可以根据需要选取对自己项目有利的配置. 自定义访问路径(path) 配置application.yml文件 #provider-user:是你的微服务模块的名称,及spr ...

  9. pybot参数

    p.p1 { margin: 0; font: 12px "Helvetica Neue" } p.p2 { margin: 0; font: 12px "Helveti ...

  10. ubuntu16.04上编译android的可执行文件并调用本地so库

    前言: 找了蛮多资料的,发现目前实现的编译方式大致就两种,一种是直接使用android源码中的编译工具链,另一种就是使用独立的交叉编译工具链,第二种我还在实现中,配置步骤挺多的 ,第一种实现方式挺方便 ...