全网最全python字典详解,一文让你再也不用担心字典问题(附案例,源代码)

37 篇文章 20 订阅

个人公众号:yk 坤帝
后台回复 基础学习系列 获取完整源代码

我们都知道序列使用索引来访问各个值,而Python中还提供一种数据结构,可以通过名称来访问其各个值,这种数据结构就是映射(mapping)。在映射中,较常用的就是字典,字典通过键值对进行索引,这里的键可能是数、字符串或元组等等。

字典的键值对是它的特点,而键值对也被称为项(item)。每个键与其值之间都用冒号(:)进行分隔,各个项之间用逗号分隔,同时被包括在花括号内,类似于{key1:value1, key2:value2}的格式。为了实现字典中的快速查找,键必须是独一无二的,这样给定键就能直接找到该键对应的值,而值是可以重复的。

空字典中没有任何项,用两个花括号表示,类似于:{}的格式。

下面则详细介绍如何创建以及使用字典。

1. 创建字典

创建字典的最简单方式就是直接赋值,但需要注意的是保持键的唯一性,否则会导致后赋值的一个键值对替换掉前面的。键的数据类型必须是不可变的,如字符串、数字或元组等,而值可以取任何数据类型。

【例 3-31】

In[1]:	number_dict = {'a':1,'b':2,'c':3,'c':4}
In[2]	number_dict
Out[2]	{'a': 1, 'b': 2, 'c': 4}
可以使用dict方法从其他的映射或键值对来转换创建字典。

【例 3-32】
In[3]:	student = [('name','Mickey'),('age',24)]
In[4]	d = dict(student)
In[5]	d
Out[5]	{'age': 24, 'name': 'Mickey'}

2. 字典操作

字典也有索引,删除,修改对应项的值等操作,操作的基本思想与序列很像。下面通过举例说明。

【例 3-33】

In[6]:	student_dict={'Tom':24,'Mickey':23,'Marry':15,'Abel':18}
In[7]	student_dict
Out[7]	{'Abel': 18, 'Marry': 15, 'Mickey': 23, 'Tom': 24}

使用len方法可以计算字典中包含的键值对数目。

【例 3-34】

In[8]	len(student_dict) 
Out[8]	4
索引时使用键做下标来找到相应的值。
【例 3-35】
In[9]	student_dict['Marry']
Out[9]	15
对字典的值进行修改时,常使用赋值的方法。
【例 3-36】
In[10]	student_dict['Tom'] = 28
In[11]	student_dict
Out[11]	{'Abel': 18, 'Marry': 15, 'Mickey': 23, 'Tom': 28}

使用del命令删除字典中对应的键值对。

【例 3-37】
In[12]	del student_dict['Mickey']
In[13]	student_dict
Out[13]	{'Abel': 18, 'Marry': 15, 'Tom': 28}
通过in命令来判断某一关键字是否在字典中。
【例 3-38】
In[14]	'Mickey' in student_dict
Out[14]	False

从这些基本的操作来看,字典和列表的操作有多个相同之处,但也存在一些重要的不同之处:

首先,列表的索引只能对应于相应的位置,而字典中的键可以多种多样,并不是一定要设置为整数,只要保证字典的键是不可变的,则实数、字符串、元组等类型都可以。

其次,通过赋值列表无法增加新的项,即不能给列表中没有的元素赋值。但是即便是字典中原本没有的键值,也可以通过赋值来创建新项。

【例 3-39】

In[15]	student_dict['Alan'] = 24
In[16]	student_dict
Out[16]	{'Abel': 18, 'Alan': 24, 'Marry': 15, 'Tom': 28}

3. 字典方法

介绍了字典的操作后,接下来就介绍一些很有用的字典方法。
1)clear方法:使用该方法进行彻底的清除,删除所有的字典项,清除成功后返回值为None。当然,除了使用clear方法外,还可以通过给字典赋空值来清空此字典。

【例 3-40】

In[17]	student_dict = {'Abel': 18, 'Alan': 24}
In[18]	student_dict.clear()
In[19]	student_dict
Out[19]	{}

2)copy方法:使用该方法进行复制,返回一个新字典,其包含与原来的字典相同的键值对。

【例 3-41】

In[20]	x = {'username': '201820091', 'grades': [90,87,10]}
In[21]	y = x.copy()
In[22]	y
Out[22]	{'grades': [90, 87, 10], 'username': '201820091'}

get方法:get方法是用来快速访问字典的项。

访问get指定的键,与普通的字典查找结果一样,而使用get访问不存在的键是不会引发异常的,只是返回None值。

【例 3-42】

In[23]	d = {}
In[24]	print(d['name'])
Out[24]	KeyError: 'name'
In[25]	print(d.get('name'))
Out[25]	None
In[26]	d['name'] = 'Eric'
In[27]	d.get('name')
Out[27]	'Eric'

同时,get方法还可以指定“默认”值,这样当未找到时,返回的将是指定的默认值而不是None。

【例 3-43】

In[28]	d.get('name', 'N/A')
Out[28]	'N/A'

4)keys方法:函数keys()返回一个字典的键值视图,列出字典中的所有键。

【例 3-44】

In[29]	x = {'username': '201820091', 'grades': [90,87,10]}
In[30]	x.keys()
Out[30]	dict_keys(['username', 'grades'])
5)pop方法:该方法首先找出指定键值对,然后将他们从字典中删除。

【例 3-45】

In[31]	d = {'x': 1, 'y': 2}
In[32]	d.pop('x')
Out[32]	1
In[33]	d
Out[33]	{'y': 2}

**6)items方法:**函数items()将字典转换成列表,返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。字典项在列表中的排列顺序不确定。返回值的类型为字典视图,可以对其执行成员资格检查。

【例 3-46】

In[34]	student = {'year': '2015', 'grades': [90,87,10]}
In[35]	student.items()
Out[35]	dict_items([('year', '2015'), ('grades', [90, 87, 10])])
In[36]	len(student.items())
Out[36]	2
In[37]	('year', '2015') in student.items()
Out[37]	True

个人公众号:yk 坤帝
后台回复 基础学习系列 获取完整源代码

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yk 坤帝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值