一、前言
??字典和列表类似,也是可变序列,不过与列表不同,它是无序的可变序列,保存内容是以“键值对”的形式存放。
二、字典特征
??字典的主要特征如下:
- 通过键而不是通过索引来读取
- 字典是任意对象的无序集合
- 字典是可变的,并且可以任意嵌套
- 字典的键必须唯一
- 字典中的键必须不可变
三、字典的创建和删除
??创建字典,在“键”和“值”之间使用冒号分割,相邻两个元素使用逗号分隔,所有的元素放在一个大括号里“{ }”中。语法格式如下:
dictionary = {"key1":"value1","key2":"value2"}
参数说明:
- dictionary:表示字典名称
- key1、key2:表示元素的键,必须是唯一的,并且不可变的,可以是字符串、元组或者数字
- value1、value2:表示元素的值,可以是任何数据,不是必须唯一
??例如,创建一个保存通讯录信息的字典,可以使用下列代码:
dictionary = {"qq": "111112233", "mr": "23455666", "无语": "12333-233"}
print(dictionary)
执行结果,如下:
??同列表和元组一样,在Python中可以创建一个空字典。使用下列两个种方法创建空字典:
dictionary = {}
或者
dictionary = dict()
??Python的dict()方法除了可以创建一个空字典外,还可以通过已有数据快速创建字典,主要表现为以下两种形式:
1.通过映射函数创建字典
??通过映射函数创建字典,语法格式如下:
dictionary = dict(zip(list1,list2))
参数说明:
- dictionary:表示字典名称
- zip()函数:用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的zip对象
- list1:一个列表,用于指定生成字典的键
- list2:一个列表,用于指定生成字典的值
实例:
name = ["小红", "小菜鸡", "小白"]
sign = ["跑车", "妖刀", "可爱"]
dictionary = dict(zip(name, sign))
print(dictionary)
执行结果,如下所示:
2.通过给定的“关键字参数”创建字典
??通过给定的“关键字参数”创建字典,语法格式如下:
dictionary = dict(key1 = value1,key2 = value2)
参数说明:
- dictionary:表示字典名称
- key1、key2:表示参数明,必须是唯一
- value1、value2:表示参数值,可以是任意数据类型
实例:
dictionary = dict(小红='跑车', 小菜鸡='妖刀', 小白='可爱')
print(dictionary)
执行结果,如下所示:
??在Python中,还可以使用dict对象的fromkeys()方法创建值为空的字典,语法如下:
dictionary = dict.fromkeys(list1)
参数说明:
- dictionary:表示字典名称
- list1:作为字典的键的列表
实例:
name = ["小红", "小菜鸡", "小白"]
dictionary = dict.fromkeys(name)
print(dictionary)
执行结果,如下所示:
3.字典的删除
??同列表和元组一样,不需要的字典可以用del命令删除整个字典。通过下列代码可以完成定义字典删除:
del dictionary
??另外,如果只想清空字典的全部元素,可以使用字典的clear()方法实现,清空字典全部元素,代码如下:
dictionary.clear()
四、通过“键值对”访问字典
??在Python中,如果想输出字典的内容也比较简单,可以直接用print()函数打印,代码如下:
dictionary = dict(小红='跑车', 小菜鸡='妖刀', 小白='可爱')
print(dictionary)
执行结果,如下所示:
??知道某个“键”,输出某个“值”,代码如下:
dictionary = dict(小红='跑车', 小菜鸡='妖刀', 小白='可爱')
print(dictionary["小红"])
执行结果,如下所示: ??当用该方法取值时,指定的“键”不存,将抛出异常,如下图: ??所以为了避免异常,可以将代码做一下修改,如下:
dictionary = dict(小红='跑车', 小菜鸡='妖刀', 小白='可爱')
print("小红的值是:", dictionary["小红"] if "小红" in dictionary else "我的字典里没有这个人")
执行结果,如下所示:
五、遍历字典
??字典是以“键值对”的形式存储数据的,所以在使用字典时需要获取这些键值对,使用字典对象的items()方法可以获取字典的“键值对”列表,语法如下所示:
dictionary.items()
??例如:定义一个字典,然后通过items()方法获取“键值对”的元组列表,并输出全部“键值对”,代码如下:
dictionary = dict(小红='跑车', 小菜鸡='妖刀', 小白='可爱')
for item in dictionary.items():
print(item)
执行结果,如下所示:
??上面的示例得到是元组中的个元素,如果想获取到具体的每个键和值,可以使用下列代码:
dictionary = dict(小红='跑车', 小菜鸡='妖刀', 小白='可爱')
for key, value in dictionary.items():
print(key, "的值是", value)
执行结果,如下所示:
六、添加、修改和删除字典元素
1.添加字典元素
??由于字典是可以变序列,所以可以随时字典中添加“键值对”,语法格式如下:
dictionary[key] = value
参数说明:
- dictionary:表示字典名称
- key:表示添加元素的键,必须是唯一的,并且不可变
- value:表示添加元素的值,可以是任何数据类型,不必唯一
实例:
dictionary = dict(小红='跑车', 小菜鸡='妖刀', 小白='可爱')
dictionary["小明"] = "小聪明"
print(dictionary)
执行结果,如下所示:
2.修改字典元素
实例:
dictionary = dict(小红='跑车', 小菜鸡='妖刀', 小白='可爱')
dictionary["小红"] = "自行车"
print(dictionary)
执行结果,如下所示:
3.删除字典元素
实例:
dictionary = dict(小红='跑车', 小菜鸡='妖刀', 小白='可爱')
del dictionary["小红"]
print(dictionary)
执行结果,如下所示:
七、字典推导式
??使用字典推导式可以快速生成一个字典,它的表现形式和列表推导式类似。例如,我们可以使用下列代码生成一个包含4个随机数的字典,其中字典值使用数字表示:
import random
randomdict = {i: random.randint(10, 100) for i in range(1, 5)}
print("生成的字典为:", randomdict)
执行结果,如下所示:
|