在使用汉语字典时,想查找某个汉字时,既可从头到尾一页一页地查找,也可通过拼音索引或笔画索引快速找到这个汉字。Python也对字典进行了构造,使用时可以轻松查到某个特定的键(类似拼音或笔画索引),通过键找到对应的值(类似于某个汉字)。示例如下:
虽然以上代码输出了想要的结果,但是操作过程比较烦琐,当数据量较大时操作起来会非常麻烦。
对于上面的操作,Python中是否提供了更简单的实现方式?能否用类似index()的方法返回索引位置,通过索引位置直接返回值?请看下面的示例:
>>> print('小智的序号是:',numbers['小智']) 小智的学号是: 001
由输出可见,在Python中这种操作是可以实现的,不过前提是numbers要为字典类型。
在Python中,创建字典的语法格式如下:
>>> d = {key1 : value1, key2 : value2 }
字典由多个键及其对应的值构成的键值对组成(一般把一个键值对称为一个项)。字典中的每个键值对(key/value)用冒号(:)分隔,每个项之间用逗号(,)分隔,整个字典包括在花括号({})中。空字典(不包括任何项)由两个花括号组成,比如{}。
在定义的一个字典中,键必须是唯一的,一个字典中不能出现两个或两个以上相同的键,若出现,则执行直接报错,但是值可以有相同的。在字典中,键必须是不可变的,如字符串、数字或元组,但是值可以取任何数据类型。
下面是一个简单的字典示例:
>>> dict_define={'小萌': '000', '小智': '001', '小强': '002'} >>> dict_define {'小萌': '000', '小智': '001', '小强': '002'}
也可以为如下形式:
在Python中,可以用dict()函数通过其他映射(如其他字典)或键值对建立字典,示例如下:
dict函数可以通过关键字参数的形式创建字典,示例如下:
>>> student_info=dict(name='小智',number='001') >>> print(f'学生信息:{student_info}') 学生信息:{'name': '小智', 'number': '001'}
需要补充一点:字典是无序的,就是不能通过索引下标的方式(类似列表)从字典中获取元素。例如:
字典的基本操作大部分与序列(sequence)类似,包括修改、删除等操作。
(1)修改字典:包括字典的更新和新增两个操作。示例如下:
由输出结果可以看到,对字典的修改和添加操作均成功。
(2)删除字典元素:用del命令显式删除一个字典元素。示例如下:
由输出结果可以看出,变量student在删除前有一个键为“小张”、值为“003”的元素,执行删除键为“小张”的操作后,键为“小张”、值为“003”的元素就不存在了,即对应键值对被删除了。在字典中,可以通过删除键来删除一个字典元素。
在Python中,除了可以删除键之外,还可以直接删除整个字典,例如:
在Python中,字典中的值可以没有限制地取任何值,既可以是标准对象,也可以是用户定义的对象,但是键不行。
对于字典,需要强调以下两点:
(1)在一个字典中,不允许同一个键出现两次,即键不能相同。创建字典时如果同一个键被赋值两次或以上,则最后一次的赋值会覆盖前一次的赋值,示例如下:
(2)字典中的键必须为不可变的,可以用数字、字符串或元组充当,但是不能用列表,示例如下:
在字典中,len()函数用于计算字典中元素的个数,也可以理解为字典中键的总数,示例如下:
type()函数用于返回输入的变量的类型,如果输入变量是字典就返回字典类型,示例如下:
与列表、字符串等内建类型一样,字典也有方法,本节将详细介绍字典中的一些基本方法。
get()方法返回字典中指定键的值,语法格式如下:
dict.get(key, default=None)
在此语法中,dict代表指定字典,key代表字典中要查找的键,default代表指定的键不存在时返回的默认值。该方法返回结果为指定键的值,如果键不在字典中,就返回默认值None。
该方法的使用示例如下:
由输出结果可以看出,用其他方法试图访问字典中不存在的项时会出错,而使用get()方法就不会报错。使用get()方法访问一个不存在的键时返回None。这里可以自定义默认值,用于替换None,例如:
输出结果中用“未指定”替代了None。
在Python中,keys()方法用于返回一个字典的所有键,语法格式如下:
dict.keys()
在此语法中,dict代表指定字典,keys()方法不需要参数,返回结果为一个字典的所有键(所有键存放于一个元组数组中,值没有重复的)。
该方法的使用示例如下:
keys()方法返回的是一个元组数组,数组中包含字典student的所有键。
values()方法用于返回字典中的所有值,语法格式如下:
dict.values()
在此语法中,dict代表指定字典,values()方法不需要参数,返回结果为字典中的所有值(所有值存放于一个列表中)。与键的返回不同,值的返回结果中可以包含重复的元素。该方法的使用示例如下:
values()方法返回一个元组数组,数组中包含字典student的所有值,并且返回值中包含重复的元素值。
update()方法用于把一个字典A的键值对更新到一个字典B里,语法格式如下:
dict.update(dict2)
在此语法中,dict代表指定字典,dict2代表添加到指定字典dict里的字典。该方法没有任何返回值,使用示例如下:
使用update()方法可以将一个字典中的项添加到另一个字典中,如果有相同的键就会将键对应的值覆盖。