Python学习笔记五:映射类型

dict全称dictionary,使用键-值(key-value)存储,具有极快的查找速度。
字典是另一种可变容器模型,且可存储任意类型对象。

字典是Python中唯一内建的映射类型,字典指定值并没有特殊顺序,都存储在一个特殊的键(key)里,键可以是数字、字符串或元组。映射是一种通过名字引用值得数据结构。

1、创建和使用字典

字典由多个键及其对应的值构成的对组成(把键/值对称为项)。字典的每个键/值对(key=>value)用冒号(:)分隔,每个项之间用逗号(,)分隔,整个字典包括在花括号( {} )中。空字典(不包括任何项)由两个大括号组成,即 { }。

字典的创建格式为:

>>> d ={ key1: value1 , key2 : value2}

键必须是唯一的,但值不必。而且键是”只读”的,所以不能对键和值分别进行初始化。
值可以取任何数据类型,键必须是不可变的,如字符串、数字和元组。

>>> dict = { ‘小萌’ : ‘1001’ , ‘小智’ : ‘1002’ , ‘小强’ : ‘1003’}
>>>dict1 = {‘abc’ : ‘456’}
>>>dict2 = {‘abc’ : 123 ,98.6 : 37}

2、dict()函数

可以用dict函数,通过其他映射或键/值序列对建立字典

>>>student = [(‘name’ , ‘小萌’) , (‘number’ , ‘1001’)]
>>>detail = dict(student)
>>>print(‘学生详细信息:’ , detail)
学生详细信息:{‘name’: ‘小萌’ , ‘number’ : ‘1001’}
>>>print(‘学生姓名:’ , deatil[‘name’])
‘学生姓名:小萌
>>>print(‘学生学号:’ , deatil[‘number’])
学生学号:1001

dict函数可以将序列转换为字典。dict函数还可以通过关键字参数创建字典。

>>>detail = dict(name = ‘小智’  , number = ‘1002’)
>>>print(‘学生详细信息:’ , detail)
学生详细信息:{‘name’ : ‘小智’ , ‘number’ : ‘1002’}

3、字典的基本操作

操作 描述
访问字典 将相应的键放入到方括号中;如果用字典里没有的键访问数据,会输出错误
修改字典 向字典添加新内容的方法是增加新键/值对,修改或删除已有键/值对
删除元素 此处的删除指的是显式删除,显式删除一个字典用del命令;除了删除键,还可以删除整个字典;删除字典后就不能对字典进行访问了,因为执行del操作后字典就不存在了,因而会报变量没有定义的错误
字典键的特性 字典值可以没有限制地取任何Python对象,既可以是标准对象,也可以是用户定义的对象,但键不可以

注意:

  • 不允许同一个键出现两次,创建时如果同一个键被赋值两次,后面的值对会被记住;
  • 键必须不可变,可以用数字、字符串或元组充当,不能用列表;

4、字典函数和方法

方法和方法 描述
len() len(dict)函数用于计算字典元素的个数,即键的总数。PS:从1开始计算
type() type(variable)函数返回输入的变量类型,如果输入变量是字典就是返回字典类型
clear() clear()方法用于删除字典内的所有项,该方法不需要参数,该函数是一个原地操作函数,没有任何返回值。字典调用clear方法后整个字典内所有项都被删除
copy() copy()方法返回一个具有相同键/值对的新字典。这个方法是浅复制,因为值本身是相同的,而不是副本.该方法不需要参数,返回结果为一个字典的浅复制。替换副本的值时原始字典不受影响。如果修改了某个值(原地修改,不是替换),原始字典就会改变,因为同样的值也在原字典中,以这种方式进行复制就是浅复制,而使用深复制可以避免该问题
fromkeys() fromkeys()方式用于创建一个新字典;以序列seq中的元素做字典的键,value为字典所有键对应的初始值。该方法返回结果为列表
get() get()方法返回指定键的值,如果值不在字典中,就返回默认值。此语法中dict代表指定字典,key代表字典中要查找的键,default代表指定键的值不存在时返回默认值。该方法返回结果为指定键的值,如果值不在字典中,就返回默认值None。由结果看到,其他方法试图访问字典中不存在的项时会报错,而使用get方法就不会。使用get方法访问一个不存在的键时,返回None,这里还可以自定义默认值,用于替换None
key in dict() Python字典in操作符用于判断键是否存在与字典中,如果键在字典dict中就返回True,否则返回Flase
items() items()方法以列表返回可遍历的(键,值)元组数组,返回结果为一个元组数组。此语法中dict代表指定字典,该方法不需要参数,返回结果为可遍历的(键/值)元组数组
keys() keys()返回以列表返回一个字典所有键。此语法中dict代表指定字典,该方法不需要参数,返回结果为一个字典所有键
setdefault() setdefault()方法和get()方法类似,用于获得与给定键相关联的值,如果键不存在与字典中,就会添加键并将值设为默认值。由输出结果看到,当键不存在时,setdefault方法返回默认值并更新字典;如果键存在,就返回与其对应的值,不改变字典。和get一样,默认值可以选择,如果不设定就使用None,如果设定就使用设定的值
update() update()方法用于把字典dict2的键/值对更新到dict里。此语法中dict代表指定字典,dict2代表添加到指定字典dict里的字典。该方法没有任何返回值。提供的字典中的项被添加到旧字典中,如果有相同的键就会覆盖
values() values()方法以列表形式返回字典中所有值,与返回键的列表不同,返回的列表中可以包含重复的元素。该方法不需要参数,返回结果为字典中的所有值
pop(key[,default]) 删除字典给定键 key 所对应的值,对应的value也会从dict中删除,返回值为被删除的值。key值必须给出,否则返回default值。dict内部存放的顺序和key放入的顺序是没有关系的
popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对)

5、字典和列表的区别

dict的特点:

  • 查找和插入的速度极快,不会随着key的增加而变慢;
  • 需要占用大量内存,内存浪费多;

list的特点:

  • 查找和插入时间随着元素的增加而增加;
  • 占用空间小,浪费内存很小;

猜你喜欢

转载自blog.csdn.net/viatorsun/article/details/80204628
今日推荐