广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python教程(七)·字典
  • 755
分享到

python教程(七)·字典

字典教程python 2023-01-31 00:01:26 755人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

本文介绍本系列教程最后一个数据结构——字典 在现实生活中,查英语字典的时候,我们通常根据单词来查找意思。而python中的字典也是类似的,根据特定的 “键”(单词)来查找 “值”(意思)。 字典的基本使用 下面以电话簿为例,我们的电话

本文介绍本系列教程最后一个数据结构——字典


在现实生活中,查英语字典的时候,我们通常根据单词来查找意思。而python中的字典也是类似的,根据特定的 “键”(单词)来查找 “值”(意思)。

字典的基本使用

下面以电话簿为例,我们的电话簿记录的是电话号码。当要查找电话号码时,我们根据人名来查找其电话号码,所以人名就是字典的键,电话号码就是字典的值。假设有下面这样的人名和电话号码的电话簿:

人名=>电话
Aganzo=>1230
Jack=>0221
Lee=>1354
Emilie=>2479

创建字典

现在我们来创建一个字典来表示这个电话簿:

>>> phonebook={'Aganzo':'1230', 'Jack':'0221', 'Lee':'1354', 'Emilie':'2479'}
>>> phonebook
{'Aganzo': '1230', 'Jack': '0221', 'Lee': '1354', 'Emilie': '2479'}
>>> 

从上面可以看出,创建字典的基本格式为{ 键1:值1, 键2:值2, 键3:值3 ...}。除了这种方法,我们还可以通过dict函数传递关键字参数来创建字典,像下面这样:

>>> phonebook = dict(Aganzo='1230', Jack='0221', Lee='1354', Emilie='2479') # 关键字参数就是字典的键,参数值就是字典的值
>>> phonebook
{'Aganzo': '1230', 'Jack': '0221', 'Lee': '1354', 'Emilie': '2479'}
>>> 

我们常用第一种方式创建字典,第二种方式比较少用,而且第二种方式有一个缺点:因为关键字参数会变为字典的键,所以键必须符合参数的命名规则(字母或下划线_开头,其后是数字、字母或下划线)。

补充:创建空字典有两种方法,一种是直接使用{};另一种是调用dict函数时,参数留空,即dict();像键:值这样的东西叫做字典的 “项”

字典基本操作

字典的基本操作有:

先来说“查”:我们可以通过名字来查找电话簿中的电话号码,在字典中类似这样,通过“键”来查“值”,基本格式为字典[键]

>>> phonebook['Aganzo']
'1230'
>>> phonebook['Jack']
'0221'
>>> phonebook['Lily']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Lily'
>>> 

从上面的代码可以看出,我们的“电话簿”中不存在Lily的电话号码,可知,当字典中不存在要查的元素时,Python会提示报错。我们可以在查之前确认字典中是否有对应的项,使用成员运算符in

>>> 'Lily' in phonebook # 不存在
False
>>> 'Jack' in phonebook # 存在
True
>>> 

或者查看“电话簿”中所有人的电话号码:

>>> for key in phonebook:
...     print('%s=>%s' % (key, phonebook[key]))
... 
Aganzo=>1230
Jack=>0221
Lee=>1354
Emilie=>2479
>>> 

再来说“改”:此时得知Lee更换了电话号码为112233,需要对电话簿进行更改,使用如下代码:

>>> phonebook['Lee'] = '112233'
>>> phonebook
{'Aganzo': '1230', 'Jack': '0221', 'Lee': '112233', 'Emilie': '2479'}
>>> 

再到“增”:假设新认识了一位朋友Zieg,得到了朋友的电话号码为123456,需要在“电话簿”中新增一项,和“改”操作一样,使用赋值运算符=

>>> phonebook['Zieg'] = '123456'
>>> phonebook
{'Aganzo': '1230', 'Jack': '0221', 'Lee': '112233', 'Emilie': '2479', 'Zieg': '123456'}
>>> 

最后说“删”:朋友Jack与你绝交了(世事无常╮(╯▽╰)╭),你决定删除他的联系方式,此时你狠心地运行了下面的代码:

>>> del phonebook['Jack']
>>> phonebook
{'Aganzo': '1230', 'Lee': '112233', 'Emilie': '2479', 'Zieg': '123456'}
>>> 

“电话簿”中再也没有了Jack的电话号码……

小结

好了,一个简单的示例过后,相信大家能理解字典的使用方法了,让我们来一个小小的总结

创建字典的方法:

  • 通过花括号创建 x = {键1:值1, 键2:值2, 键3:值3 ...}
  • 通过dict函数创建 x = dict(key1=value1, key2=value2, key3=value3 ...)
  • 创建空字典可以使用 x = {}x = dict()

字典的基本操作:

  • 增:x['abc'] = 123 (键'abc'不存在)
  • 删:del x['abc']
  • 改:x['abc] += 1x['abc'] = 2x['abc'] *= 10……(键'abc'存在)
  • 查:result = x['abc']print(x['abc'])……(键'abc'存在)

补充:字典的用法和列表类似,只不过列表索引元素的时候使用的是数字作键,而字典大多数时候使用字符串索引元素。


关于字典的键,还有一点是要说清楚的:前面我们使用字典的时候都是使用了字符串类型的键,可我没有说字典的键只能是字符串!

实际上,字典的键可以是任意的不可变类型,如:字符串(最常用)、元组、浮点数、整数。


字典方法

字典也是对象,和列表一样,字典也提供了一些实用的方法,下面是介绍

clear

clear方法用于清空字典中的所有项:

>>> d = {'name':'feather', 'age':18}
>>> d
{'name': 'feather', 'age': 18}
>>> d.clear()
>>> d
{}
>>> 

这个方法是原地的操作,意思就是操作对象是在字典本身,这和直接将变量赋值为空字典是不一样的,从下面的例子可以看出:

>>> x = {'a':1}
>>> y = x # y变量引用的字典和x变量引用的是同一个字典
>>> x = {} # 将x变量引用改为另一个字典,这个字典是空字典
>>> x
{}
>>> y # y变量引用的字典没有被改变
{'a': 1}
>>> 

copy

copy方法用于返回一个新字典,这个新字典和原来的字典拥有相同的项:

>>> x = {'name':'feather', 'blog':['https://blog.csdn.net/lonely_feather', 'Https://featherl.gitee.io/']}
>>> y = x.copy()
>>> y['name'] = 'Lee'
>>> y['blog'].append('https://www.cnblogs.com/featherl/') 
>>> x
{'name': 'feather', 'blog': ['https://blog.csdn.net/lonely_feather', 'https://featherl.gitee.io/', 'https://www.cnblogs.com/featherl/']}
>>> y
{'name': 'Lee', 'blog': ['https://blog.csdn.net/lonely_feather', 'https://featherl.gitee.io/', 'https://www.cnblogs.com/featherl/']}
>>> 

可以看到,y字典是从x复制而来的,所以改变y字典的键为'name'的项的时候并不影响x字典,要注意的是,y['blog'].append('https://www.cnblogs.com/featherl/')这句代码不属于修改y字典,这是修改y字典的键为'blog'的项引用的列表,而y字典和x字典的'blog'项引用的是同一个列表(因为y字典的项是从x字典中复制而来的),所以修改这个列表的时候,在x和y两个字典上都可以看到效果。

这种问题是因为copy方法是“浅复制”,copy方法仅仅把相同的值存储到了一个新的字典里,要想避免这种问题,需要使用“深复制”,可以使用copy模块的deepcopy函数来实现:

>>> from copy import deepcopy
>>> x = {'list':[1,2,3]}
>>> y = deepcopy(x)
>>> y['list'].append(4)
>>> x
{'list': [1, 2, 3]}
>>> y
{'list': [1, 2, 3, 4]}
>>> 

fromkeys

fromkeys方法用给定的键创建新字典,每个键对应的默认值都为None:

>>> {}.fromkeys(['name'])
{'name': None}
>>> dict.fromkeys(['name', 'age'])
{'name': None, 'age': None}

上面代码的第一个例子中,我们创建了一个空字典,然后使用这个空字典的fromkeys方法创建了一个新字典,第二个例子中,我们直接使用dict这个类(实际上dict不是函数,是一个“类”)的fromkeys方法创建新字典。

我们还可以自己设置默认值:

>>> dict.fromkeys(['name', 'age'], '???')
{'name': '???', 'age': '???'}

get

get方法使用给定的键访问字典中的项,不过,如果字典中不存在该项时,get方法返回默认值None,而不是报错:

>>> x = {'name':'Lee'}
>>> x.get('age')
>>> print(x.get('name'))
Lee
>>> print(x.get('age'))
None

同样的,这个默认值也是可以自己设定的:

>>> x = {'name':'Lee'}
>>> x.get('age', '???')
'???'

update

update方法将一个新字典合并到当前字典,当存在相同的键,用新字典的值进行覆盖:

>>> x = {'name':'Lee'}
>>> x = {'name':'Lee', 'blog':'https://featherl.gitee.io'}
>>> y = {'name':'feather', 'age':18}
>>> x.update(y)
>>> x
{'name': 'feather', 'blog': 'https://featherl.gitee.io', 'age': 18}

pop

pop方法用来返回指定键的项,并将该项从字典中移除:

>>> x = {1:1, 2:2, 3:3}
>>> x.pop(1)
1
>>> x
{2: 2, 3: 3}

上面的例子同时也证明了字典的键不一定是字符串。

popitem

popitem方法随机挑选一个项返回,并删除这个项。字典不同于列表,字典的项是没有顺序,不同的机器或者不同版本的python,其字典存储项的顺序可能是不一样的,故popitem方法具体处理哪一项是没法预测的。

使用举例如下:

>>> x = {1:1, 2:2, 3:3}
>>> x.pop
x.pop(      x.popitem(  
>>> help(x.popitem)

>>> x.popitem()
(3, 3)
>>> x.popitem()
(2, 2)
>>> x.popitem()
(1, 1)
>>> x.popitem()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'popitem(): dictionary is empty'

当字典为空的时候,该方法抛出错误。

items

items方法返回字典的所有的项,每个项为一个形式为(key, value)的元组,返回的类型是一种类似列表的类型,可以使用for循环迭代,但是没有列表的方法,最好先使用list转换成列表:

>>> x = {'name':'Lee', 'age':18}
>>> x.items()
dict_items([('name', 'Lee'), ('age', 18)])
>>> list(x.items())  # 转换成列表
[('name', 'Lee'), ('age', 18)]

注意:在python2中此方法还有后面的keys、values方法返回的就是列表类型,不过我们学的是python3,要注意区分。

类似items的方法还有:

  • keys方法返回字典的所有的键(类似列表的类型)
  • values方法返回字典的所有的值(类似列表的类型)

到此为止,本系列教程的python数据结构已经介绍完了,在本系列教程只是介绍了python中如何使用常用数据结构,并没有讲实现原理。而数据结构在计算机领域是不可或缺的,希望对数据结构了解甚少的读者可以认真学习一下数据结构的相关知识。

等学习完文件操作后,我们将用一个小项目实践一下(其实忽略文件操作,目前学到的知识还是可以做很多东西的),敬请期待! ( ̄︶ ̄)↗

--结束END--

本文标题: python教程(七)·字典

本文链接: https://www.lsjlt.com/news/181511.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python教程(七)·字典
    本文介绍本系列教程最后一个数据结构——字典 在现实生活中,查英语字典的时候,我们通常根据单词来查找意思。而python中的字典也是类似的,根据特定的 “键”(单词)来查找 “值”(意思)。 字典的基本使用 下面以电话簿为例,我们的电话...
    99+
    2023-01-31
    字典 教程 python
  • Python入门教程(七)Python数字类型
    目录Python 数字类型IntFloat复数类型转换随机数Python 数字类型 Python 中有三种数字类型: intfloatcomplex 为变量赋值时,将创建数值类型的变...
    99+
    2023-05-15
    Python入门 Python数字类型
  • Python学习教程:Python字典处理
    Python字典处理根据键访问值普通访问实例:info={"name":"Mark","age":18}print("我的姓名:%s"%info["n...
    99+
    2023-06-02
  • Python入门教程(十五)Python的字典
    目录字典(Dictionary)访问项目更改值遍历字典检查键是否存在字典长度删除项目复制字典嵌套字典dict() 构造函数字典方法字典(Dictionary) 字典是一个无序、可变和...
    99+
    2023-05-16
    Python Python字典
  • Python中字典的setdefault()方法教程
    前言 在python基础知识中有说过,字典是可变的数据类型,其参数又是键对值。setdefault()方法和字典的get()方法在一些地方比较相像,都可以得到给定键对应的值。但setdefault()方法可...
    99+
    2022-06-04
    字典 方法 教程
  • python字典翻转教学
    目录 第1关 创建大学英语四级单词字典  第2关 合并大学英语四六级词汇字典  第3关 查单词输出中文释义 第4关 删除字典中特定字母开头的单词 第5关 单词英汉记忆训练 第1关 创建大学英语四级单词字典 本关任务:编写一个能创建大学英...
    99+
    2023-09-05
    python 学习 头歌
  • Python入门之字典的使用教程
    目录前沿字典操作创建字典嵌套字典dict() 创建字段访问字典中的值更新字典删除字典元素检查键是否存在字典的遍历字典函数获取字段的长度复制字典批量创建键前沿 Python字典是一种可...
    99+
    2022-11-11
  • Python基础之字典的详细使用教程
    目录一. 什么是字典二. 创建字典三. 字典元素获取四. 字典元素的增删改操作五. 字典的视图操作一. 什么是字典 字典作为Python的一个内置数据结构,和列表一样都是可变序列的,...
    99+
    2022-11-11
  • Python编程:字典入门,Python
    字典是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据。 比如有份学生基本信息表,姓名,张三,学号12345,这组数据看上去像两个列表,但这两个列表的元素之间有一定的关联关系。如果单纯使用两个列表来保存这组数...
    99+
    2023-01-31
    字典 入门 Python
  • python字典
    所不同的是列表的索引只是从0开始的有序整数,不可重复;而字典的索引实际上在字典里应该叫键,虽然字典中的键和列表中的索引一样是不可重复的,但键是无序的,也就是说字典中的元素是没有顺序而言的,字典中的元素任意排列但不影响字典的使用字典的键可以是...
    99+
    2023-01-30
    字典 python
  • python 字典
    一、什么是字典   字典是一种可变容器模型,且可存储任意类型对象。字典的每个键值对(key->value)用冒号“:”分割,每个键值对之间用逗号“,”分割,整个字典包括在花括号“{}”中   注意:键必须使用不可变类型即整形、字符串...
    99+
    2023-01-30
    字典 python
  • python---字典
    #字典是key-value的数据类型,字典是无序的,没有下标(列表有下标),key必须是唯一的info = {     "stu001":"fengxiaoli",     "stu002":"cx",     "stu003":"wyc"...
    99+
    2023-01-31
    字典 python
  • python - 字典
    *********************字典******************字典是python中唯一的映射类型,key-value(哈希表),字典对象是可变的,但key必须用不可变对象。字典是无序的。*)字典的创建1.赋值创建字典,k...
    99+
    2023-01-31
    字典 python
  • python字典嵌套字典实例
    日志文件样式:2018-06-27 09:07:37 Postman[INFO]: [1530061656f8lda-7M5E9] from: <lilh@test.com><router>, to: <xie...
    99+
    2023-01-31
    字典 嵌套 实例
  • Python入门教程(二十七)Python的日期
    目录Python 日期日期输出创建日期对象strftime() 方法Python 日期 Python 中的日期不是其自身的数据类型,但是我们可以导入名为 datetime 的模块,把...
    99+
    2023-05-18
    Python 入门 Python 日期
  • Python入门教程(十七)Python的While循环
    目录Python 循环while 循环break 语句continue 语句else 语句Python 循环 Python 有两个原始的循环命令: while 循环for 循环 wh...
    99+
    2023-05-16
    Python While Python 循环
  • Python编程基础之字典
    目录一、字典概念二、字典操作(一)创建字典1、先创建空字典,再添加元素(键值对)2、直接创建包含若干键值对的字典(二)字典操作1、读取字典元素 - 按键取值2、添加字段元素 - 按键...
    99+
    2022-11-12
  • Python 字典(Dictionary
    n字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:d = {key1 : value1, key2 ...
    99+
    2023-01-31
    字典 Python Dictionary
  • python 字典(Dictionary)
    字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)...
    99+
    2023-01-30
    字典 python Dictionary
  • #11 Python字典
    前言 前两节介绍了Python列表和字符串的相关用法,这两种数据类型都是有序的数据类型,所以它们可以通过索引来访问内部元素。本文将记录一种无序的数据类型——字典! 一、字典与列表和字符串的区别 字典是无序的,列表和字符串是有序的 ...
    99+
    2023-01-30
    字典 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作