Python创建字典的多种方法(附带实例)
与列表和元组不同,字典(Dict)对象中的每项数据由键和值两个部分组成。在字典中不会出现重复的键,所以可以通过唯一的键访问与该键关联的值。
与列表类似,在字典中也可以随时添加和删除数据。
下面分别介绍使用这几种方法创建字典。
下面的代码是创建只包含一项数据的字典,该项数据的键是“牛奶”,值是 2:
下面的代码是创建包含 3 项数据的字典,每项数据由商品名称和单价组成:
下面的代码是创建与前面示例完全相同的字典,为 dict() 函数指定 3 个参数,每个参数的名称被创建为字典中的键,每个参数的值被创建为字典中与键关联的值。
使用 dict() 函数可以将序列对象转换为字典,该方法要求序列对象中的每项数据都由两个值组成:
下面的代码创建与前面示例相同的字典,此处将一个列表作为参数传递给 dict() 函数,该列表中的每项数据都是一个元组,每个元组都由两个值组成,第一个值是字符串,第二个值是数字。
下面的代码仍然是创建与前面示例相同的字典,首先创建分别表示商品名称和单价的两个列表,然后使用 zip() 函数和 dict() 函数将两个列表中的相关项创建为字典中每项数据的键和值。
下面的代码是使用变量 x 控制字典中每项数据的键和值,变量 x 的值用作每项数据的键,变量 x 的平方值用作与键关联的值,变量 x 和 x 的平方之间以英文冒号分隔。通过逐一引用由 list() 函数和 range() 函数构建的列表中的每一个数字来得到变量 x 的值。
使用 zip() 函数可以在字典推导式中使用两个变量分别控制字典中的键和值。下面的代码创建与前面示例完全相同的字典,但是此处使用的是字典推导式和 zip() 函数。
与列表类似,在字典中也可以随时添加和删除数据。
Python创建包含一项或多项数据的字典
创建包含一项或多项数据的字典有以下几种方法:- 手动输入大括号和字典中的数据;
- 使用 dict() 函数将关键字参数创建为字典;
- 使用 dict() 函数将序列对象转换为字典;
- 使用 dict() 函数和 zip() 函数创建字典。
下面分别介绍使用这几种方法创建字典。
Python手动输入大括号和字典中的数据
创建字典最直接的方法是输入一对大括号,并在其中输入一项或多项数据,每项数据中的键和值之间以英文冒号分隔,各项数据之间以英文逗号分隔。下面的代码是创建只包含一项数据的字典,该项数据的键是“牛奶”,值是 2:
{'牛奶': 2}
下面的代码是创建包含 3 项数据的字典,每项数据由商品名称和单价组成:
{'牛奶': 2,'酸奶': 3,'果汁': 5}
Python用dict()函数和关键字参数创建字典
创建字典时,手动输入每一项数据,以及引号、冒号和逗号的效率很低。使用 dict() 函数能够以类似于为函数指定关键字参数的形式,将关键字参数的名称及其值转换为字典中的键和值。下面的代码是创建与前面示例完全相同的字典,为 dict() 函数指定 3 个参数,每个参数的名称被创建为字典中的键,每个参数的值被创建为字典中与键关联的值。
dict(牛奶=2,酸奶=3,果汁=5)
Python用dict()函数将序列对象转换为字典
Python 中的字符串、列表、元组等都是序列对象,序列对象中的每项数据是有序排列的,可以被索引、切片和迭代。迭代是指程序依次处理每一项数据,直到最后一项数据为止。使用 dict() 函数可以将序列对象转换为字典,该方法要求序列对象中的每项数据都由两个值组成:
- 第一个值被创建为字典中的键;
- 第二个值被创建为与键关联的值。
下面的代码创建与前面示例相同的字典,此处将一个列表作为参数传递给 dict() 函数,该列表中的每项数据都是一个元组,每个元组都由两个值组成,第一个值是字符串,第二个值是数字。
dict([('牛奶', 2),('酸奶',3),('果汁',5)])
Python用dict()函数和zip()函数创建字典
如果字典中的键和值分别位于两个序列对象中,则可以使用 zip() 函数将两个序列对象中相同位置上的值组合为一项数据,类似于上一个示例中由两个值组成的元组,然后使用 dict() 函数将 zip() 函数的返回值转换为字典。下面的代码仍然是创建与前面示例相同的字典,首先创建分别表示商品名称和单价的两个列表,然后使用 zip() 函数和 dict() 函数将两个列表中的相关项创建为字典中每项数据的键和值。
names = ['牛奶', '酸奶', '果汁'] prices = [2, 3, 5] dict(zip(names, prices))
Python创建符合特定条件的字典
与列表推导式类似,使用字典推导式可以创建包含满足指定条件的数据字典。下面的代码是使用变量 x 控制字典中每项数据的键和值,变量 x 的值用作每项数据的键,变量 x 的平方值用作与键关联的值,变量 x 和 x 的平方之间以英文冒号分隔。通过逐一引用由 list() 函数和 range() 函数构建的列表中的每一个数字来得到变量 x 的值。
{x: x**2 for x in list(range(1,4))}代码的运行结果如下:
{1: 1,2: 4,3: 9}
使用 zip() 函数可以在字典推导式中使用两个变量分别控制字典中的键和值。下面的代码创建与前面示例完全相同的字典,但是此处使用的是字典推导式和 zip() 函数。
names = ['牛奶', '酸奶', '果汁'] prices = [2, 3, 5] {x:y for (x, y) in zip(names, prices)}