从零开始的Python计划#5.2 【字典】

本文介绍了Python字典的基本概念和操作,包括字典与序列的区别、检索值、添加元素、获取元素数量及混合数据类型。讨论了字典键的唯一性,并展示了清除字典、通过键获取值、遍历字典等方法,帮助初学者掌握字典的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字典

字典是存储数据集合的对象
字典的每个元素都由两部分组成,每个元素都包含一个键和一个值
通常,字典被称为键到值的映射因为我们存储在字典中的每个值都会有一个分配的键(每次我们开始增值,我们都有一个键),
键必须是一个不变的对象键可以是你想要的任何键,但它必须是不变的(和元组的特征一样)
要检索特定值,请使用与其关联的键,与列表不同,与其使用索引从字典中获取值,不如使用其键。(调用键,然后我们将获得该值)
字典中的元素是无序存储的在字典中元素是按随机顺序存储的。(因为字典知道当我们使用键来调用值,它将使用键来搜索值并将其返回给我们,因此顺序并不重要)

创建字典的格式是字典的名称和花括号{}
在里面要用逗号’ , ’ 隔开元素
在这里插入图片描述
元组对应(),列表使用[] ,字典则用{}

1·序列与字典的比较

一·
按顺序将元素添加到序列中的顺序进行存储
当我们将元素存储在列表中时,列表会记住它们存储在什么位置。
在这里插入图片描述

在这里插入图片描述这就是列表的重点,列表采用我们存储在其中的值,并为其分配索引。,索引就是我们调用值的方式。
然而,字典值不会以任何特定顺序存储,继续使用上面的例子:在这里插入图片描述

在这里插入图片描述创建字典并存储了三个元素,一旦我们创建了,Python就会将字典中的项重新排列并按顺序排列,在这种情况下,将按键的大小顺序排列(因为这种情况下,键是整数,它按照大小顺序排序它们)
将序列元素的索引用作键我们可以将位置的索引号视为键,在字典中,键是明确分配的****(因此,我们可以自己确定字典中一组元素的键是什么)。

2·从字典中检索值

从字典中检索值的一般格式是:dictionary[key]
**如果键在字典中,则返回关联的值,否则将引发KeyError异常**与列表相似,当我们使用不存在的索引时,我们将返回与字典相同的错误

id_name = {123:'Chris', 125:'Katie', 120:'John'}
print(id_name[120])
#得出结果:
John

print(id_name[130])#130就是字典中不存在的键
#得出结果:
Traceback (most recent call last):
 File "<pyshell#2>", line 1, in <module>
  id_name[130]
 KeyError: 130

使用in和not in运算符测试键是否在字典中
使用in和not in 在尝试采用元素之前进行检查,有助于防止KeyErrors键错误。在这里插入图片描述
用if语句来检查字典中是否有这个键,如果该语句是正确的,我会得到打印的语句,如果是错误的,则if语句会忽略其中的代码语句,并且我们不会收到任何错误

3·向现有字典添加元素

字典是可变对象,添加新的键值对格式:dictionary[key] = value
如果字典中存在键,则与之关联的值将被更改(因为字典是可变的,我可以使用现有键并为其分配新的值)

id_name = {123:'Chris', 125:'Katie', 120:'John'} 
id_name[125]='Robert'
print(id_name)
#输出结果:
{123: 'Chris', 125: 'Robert', 120: 'John'}

id_name[133]='Paul'#这是字典中不存在的键和值
print(id_name)
#输出结果:
{123: 'Chris', 125: 'Robert', 120: 'John', 133: 'Paul'}

字典则将添加133(‘Paul’字典将采用键和值对并添加到现有元素列表中)
要删除键值对,格式:del dictionary[key]键和Python将对元素的结尾进行键搜索,将其分配给该键并从字典中删除(如果键不在字典中,那么我们会收到KeyError)

4·获取元素数并混合数据类型

len函数:用于获取字典中的元素数
就像在列表中使用一样:在这里插入图片描述
len(id_name)这将获取字典内元素的数量4
存储在单个字典中的值可以是不同类型的在这里插入图片描述

5·字典键的属性

字典键的某些属性对于理解字典的功能非常重要。
键必须是不可变的对象,但关联的值可以是任何类型的对象,
一个字典可以包含几种不同的不可变类型的键。
键值应该是唯一的。如果在赋值过程中遇到重复的键,则以最后一个分配为准

record = {'name':'John', 'id':3245, 'age':33,'name':'Robert'} 
print(record['name'])
#输出结果:
Robert

字典不允许键有相同的名字,相同的值(所以后面的’name’:‘Robert’将顶替前面有相同内容的键值对’name’:‘John’)要确保我们的字典中的每个值都有唯一的键。

一些操作字典的方法

(1)clear方法:删除字典中的所有元素,使其为空
有时可能我们会有个暂时的字典,用它来储存一些暂时的数据,当到达某个特定编程点时,我们会需要清除字典中的数据,并为下一轮存储数据做好准备,这时候就需要用到clear方法。
格式:dictionary.clear()

id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'} 
id_name.clear()
print(id_name)
#输出结果:
{}

(2)get方法:从字典中获取与指定键关联的值
get用于获取字典的特定值
格式:dictionary.get(key,default)
default是默认参数,如果找不到键,则返回默认值。

id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'} 
print(id_name.get(125, "Key not found in the dictionary"))
#输出结果:
Robert

print(id_name.get(129, "Key not found in the dictionary"))
#输出结果:
'Key not found in the dictionary‘

这会把字典拿走,找到125,再返还Robert。在这种情况下,作为默认设置,设置了"Key not found in the dictionary"。如果字典中没有任何键为129的内容,可以自动设置消息或者设置我想要的值。可以返回任何想要的东西,以防字典里没有我要找的键。
可以替代[]运算符,并且无法引发KeyError异常

(3)keys方法:将所有字典键作为序列返回
假设它是否用于调试,想看看字典里有什么或者需要根据字典的键创建一个列表,就可以使用keys方法。会把所有的键都放在字典里。
格式:dictionary.keys()

(4)pop方法:返回与指定键关联的值,并从字典中删除该键值对
取出键与键关联的值,并返回它,但它保持值不变。
格式:dictionary.pop(key,default)
default是默认设置,未找到键时返回默认值,和上面示例一样。

id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'} 
id_name.pop(120, "Key not found")
'John'
print(id_name)

#输出结果:
{123: 'Chris', 125: 'Robert', 133: 'Paul'}

因为,pop从字典中删除了元素,如果打印,pop的值被删除。

(5)values方法:将所有字典值作为序列返回
返还所有字典的赋值为一个序列
格式:dictionary.values() 它可以遍历使用for循环。

(6)items方法:返回字典的所有键和相关值,作为一种称为字典视图的特殊序列类型
这是与字典相关的最具体的方法之一,它以特殊格式返回一切–字典视图。
格式:dictionary.items() 它可以遍历使用for循环。

id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'} 
for key, value in id_name.items():
    print(key, value)
#输出结果:
120 John
123 Chris
125 Robert
133 Paul

可以使用for循环来迭代,items方法将返回迭代的键值。字典视图由两个元素组成:键和值。

使用for循环遍历字典

字典也很适用于循环
一般格式:在这里插入图片描述
每次循环迭代时,var都被分配一个键

id_name={120: 'John', 123: 'Chris', 125: 'Robert', 133: 'Paul'}
for var in id_name: 
 	print(var)
#输出结果:
120
123
125
133

for var in id_name: 
    print(id_name[var])#打印字典中的变量
    
#输出结果:
John
Chris
Robert
Paul

列表,元组,字典,循环,它们组合在一起会变成非常强大的计算和编程技能,虽然有一点点复杂,但是还是希望能够耐心看完www

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值