Python序列——字典

在Python中,字典与列表类似,也是可变序列,不过与列表不同的是,它是无序的可变序列,保存的内容是以“键-值对”的形式存放的。类似于我们的新华字典,将拼音和汉字关联起来,通过音节可以快速找到目标汉字。这里,音节相当于键,目标汉字相当于值。键是唯一的,而值可以有多个。

字典的特征

  • 通过键来读取值
  • 字典是任意对象的无序集合。字典是无序的,保存在字典中的项没有特定的顺序,这样可以提高查询效率。
  • 字典是可变的,并且可以任意嵌套。字典可以在远处增长或者缩短,并且支持任意深度的嵌套,它的值可以是列表或者其它字典。
  • 字典的键必须唯一。不允许同一个键出现两次,如果出现两次,则后面的那个值会被记住。
  • 字典中的键必须不可变。键可以是数字、字符串、元组。

字典的相关操作

字典的创建

1. 通过映射函数创建字典

语法:dictionary = dict(zip(list1,list2))

释义:

  • dictionary:字典名称
  • zip()函数:用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的zip对象。如果想获取元组,可以将zip对象使用tuple()函数转换为元组;如果想获取列表,则可以使用list()函数将其转换为列表。
  • list1:一个列表,用于指定要生成字典的键。
  • list2:一个列表,用于指定要生产字典的值。

注意:如果list1和list2的长度不一致,则与最短的列表长度相同。

代码实例:

#通过映射函数创建字典
name = ['小红','小青','小明']         #作为键的列表
hobby = ['唱歌','跳舞','书法']        #作为值的列表
dictionary = dict(zip(name,hobby))    #转换为字典
print(dictionary)


运行结果如下:


==================== RESTART: E:\python_work\python_demo.py ====================
{'小红': '唱歌', '小青': '跳舞', '小明': '书法'}
>>> 

2. 通过给定的关键字参数创建字典

语法格式:

           dictionary = dict(key1=value1, key2=value2, key3=value3),....,key n = value n)

参数释义:

dictionary:字典名称

key1、key2...keyn:参数名,必须唯一。该参数名会转换为字典的键

value1、value2....valuen:参数值,可以是任何数据类型,可以重复。该参数值会转换为字典的值。

代码实例:

#通过给定的关键字参数创建字典
dictionary = dict(小红='爱唱歌',小青='爱跳舞',小明='爱书法')
print(dictionary)

代码运行结果如下:

==================== RESTART: E:\python_work\python_demo.py ====================
{'小红': '爱唱歌', '小青': '爱跳舞', '小明': '爱书法'}
>>> 

3.创建一个值为空的字典

语法格式:dictionary = dict.fromkeys(list1),其中list1表示字典的键列表

代码实例:

#创建一个值为空的字典
name_list = ['小红','小青','小明'] 
dictionary = dict.fromkeys(name_list)
print(dictionary)

代码运行结果如下:

==================== RESTART: E:\python_work\python_demo.py ====================
{'小红': None, '小青': None, '小明': None}
>>> 

4.通过已经存在的元组和列表创建字典

代码实例:

#通过已经存在的元组和列表创建字典
name_tuple = ('小红','小青','小明')   #作为键的元组
hobby = ['唱歌','跳舞','书法']        #作为值的列表
dict1 = {name_tuple:hobby}
print(dict1)

代码运行结果如下:

==================== RESTART: E:\python_work\python_demo.py ====================
{('小红', '小青', '小明'): ['唱歌', '跳舞', '书法']}
>>> 

注意,上述创建方式,键不能为“列表”,否则程序会出错,看下面:

#列表不能作为键来创建字典,否则程序报错
name_tuple = ['小红','小青','小明']   #作为键的元组
hobby = ['唱歌','跳舞','书法']        #作为值的列表
dict1 = {name_tuple:hobby}
print(dict1)

运行结果如下,程序会报错:

==================== RESTART: E:\python_work\python_demo.py ====================
Traceback (most recent call last):
  File "E:\python_work\python_demo.py", line 366, in <module>
    dict1 = {name_tuple:hobby}
TypeError: unhashable type: 'list'
>>> 

访问字典

直接上实例代码,不明白的亲们一定要亲手敲一遍啊,不能手懒哦:

#通过映射函数创建字典
name = ['小红','小青','小明']         #作为键的列表
hobby = ['唱歌','跳舞','书法']        #作为值的列表
dictionary = dict(zip(name,hobby))    #转换为字典
print(dictionary)
print('==========接下来访问字典===指定的键存在=====')
print('小红的爱好是:',dictionary['小红'])
print('小青的爱好是:',dictionary['小青'])

print('小明的爱好是:',dictionary.get('小明'))#通过get也可以获取键对应的值
print('小黄的爱好是:',dictionary.get('小黄'))#如果键不存在,则返回默认值None
print('小张的爱好是:',dictionary.get('小张','指定的键不存在'))#程序优化:如果键不存在,则输出'指定的键不存在'

print('==========接下来访问字典===指定的键不存在==抛异常处理===')
print('小白的爱好是:',dictionary['小白'] if '小白' in dictionary else '要查找的键不存在')

print('==========接下来访问字典===指定的键不存在==程序中断运行===')
print('小白的爱好是:',dictionary['小白'])

print('程序执行完毕')

*************************************************
*******************运行结果如下*******************
*************************************************

==================== RESTART: E:\python_work\python_demo.py ====================
{'小红': '唱歌', '小青': '跳舞', '小明': '书法'}
==========接下来访问字典===指定的键存在=====
小红的爱好是: 唱歌
小青的爱好是: 跳舞
小明的爱好是: 书法
小黄的爱好是: None
小张的爱好是: 指定的键不存在
==========接下来访问字典===指定的键不存在==抛异常处理===
小白的爱好是: 要查找的键不存在
==========接下来访问字典===指定的键不存在==程序中断运行===
Traceback (most recent call last):
  File "E:\python_work\python_demo.py", line 387, in <module>
    print('小白的爱好是:',dictionary['小白'])
KeyError: '小白'
>>> 

遍历字典

使用字典的items()方法可以获取字典的“键-值对列表”。

语法:dictionary.items()

代码实例:

#遍历字典
name = ['小红','小青','小明']         #作为键的列表
hobby = ['唱歌','跳舞','书法']        #作为值的列表
dictionary = dict(zip(name,hobby))    #转换为字典

print('=====这些同学的爱好分别是=====')
for item in dictionary.items():
    print(item)

print('====明确输出key-value值===')
for key,value in dictionary.items():
    print(key,'的爱好是:',value)


代码执行结果:

==================== RESTART: E:\python_work\python_demo.py ====================
=====这些同学的爱好分别是=====
('小红', '唱歌')
('小青', '跳舞')
('小明', '书法')
====明确输出key-value值===
小红 的爱好是: 唱歌
小青 的爱好是: 跳舞
小明 的爱好是: 书法
>>> 

添加、修改、删除字典元素

添加字典元素:通过已有的字典名称dictionary[不重复的键] = '值' 即可

修改字典元素:通过已有的字典名称dictionary[重复的键] = '值' 即可

删除字典元素:通过del dictionary[字典中存在的键] 即可,但需要保证这个“键”必须存在,否则报错

代码实例如下:

#添加、修改、删除字典元素
name = ['小红','小青','小明']         #作为键的列表
hobby = ['唱歌','跳舞','书法']        #作为值的列表
dictionary = dict(zip(name,hobby))    #转换为字典

print('原来的字典:',dictionary)
dictionary['小白'] = '写代码'         #添加字典元素
print('字典中加入了小白:',dictionary)

dictionary['小红'] = '学习'           #修改字典元素
print('小红的爱好由唱歌变为学习了:',dictionary)


代码运行结果:


=========================== RESTART: E:\python_work\python_demo.py ===========================
原来的字典: {'小红': '唱歌', '小青': '跳舞', '小明': '书法'}
字典中加入了小白: {'小红': '唱歌', '小青': '跳舞', '小明': '书法', '小白': '写代码'}
小红的爱好由唱歌变为学习了: {'小红': '学习', '小青': '跳舞', '小明': '书法', '小白': '写代码'}
>>> 

字典推导式

使用字典推导式可以快速生成一个字典,这和列表推导式差不多。

举个例子,生成一个包含4个随机数的字典,字典的键用数字来表示。

#使用字典推导式生成一个包含4个随机数的字典
import random
randomdict = {i:random.randint(10,100) for i in range(1,5)}
print('生成的字典为:',randomdict)

程序运行结果为:


=========================== RESTART: E:\python_work\python_demo.py ===========================
生成的字典为: {1: 74, 2: 65, 3: 42, 4: 46}
>>> 

本小节到此结束啦^_^

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我是一名程序猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值