python基础(七)--字典
前言
本文承接上文
字典
字典(dict)是一种无序的、可变的序列,它的元素以“键值对(key-value)”的形式存储。相对地,列表(list)和元组(tuple)都是有序的序列,它们的元素在底层是挨着存放的。
而字典和列表最大的不同在于
- 列表可以存储大量的数据类型,但是如果数据量大的话,他的查询速度比较慢。
- 列表只能按照顺序存储,数据与数据之间关联性不强。
而这里需要引入一个概念,什么数据类型是可变的
- 不可变(可哈希)的数据类型:int,str,bool,tuple。
- 可变(不可哈希)的数据类型:list,dict,set。
而字典作为python中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的:
Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的。
Value:任意数据(int,str,bool,tuple,list,dict,set)
哈希(hash)这个概率后面会提,这里先当一个概念知道就行
而映射关系大概和下图相似:
字典的主要特征:
主要特征 | 解释 |
---|---|
通过键而不是通过索引来读取元素 | 字典类型有时也称为关联数组或者散列表(hash)。它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。 |
字典是任意数据类型的无序集合 | 和列表、元组不同,通常会将索引值 0 对应的元素称为第一个元素,而字典中的元素是无序的。 |
字典是可变的,并且可以任意嵌套 | 字典可以在原处增长或者缩短(无需生成一个副本),并且它支持任意深度的嵌套,即字典存储的值也可以是列表或其它的字典。 |
字典中的键必须唯一 | 字典中,不支持同一个键出现多次,否则只会保留最后一个键值对。 |
字典中的键必须不可变 | 字典中的值是不可变的,只能使用数字、字符串或者元组,不能使用列表。 |
Python 中的字典类型相当于 Java 或者 C++ 中的 Map 对象。
字典的创建
1.使用{}创建字典
#使用字符串作为key |
运行结果为
{'数学': 95, '英语': 92, '语文': 84} |
从上面的例子也可以看出字典里的键可以是整数、字符串或者元组,只要符合唯一和不可变的特性就行;字典的值可以是 Python 支持的任意数据类型。
2.使用 dict()函数来创建字典
每一个参数都是一个键值对,参数名就是键,参数名就是值(这种方式创建的字典,key都是字符串)
d = dict(name='孙悟空',age=18,gender='男') |
运行结果为
{'name': '孙悟空', 'age': 18, 'gender': '男'} |
也可以将一个包含有双值子序列的序列转换为字典
双值序列,序列中只有两个值,[1,2] (‘a’,3) ‘ab’
子序列,如果序列中的元素也是序列,那么我们就称这个元素为子序列
例如
d = dict([('name','孙悟空'),('age',18)]) |
运行结果为
{'name': '孙悟空', 'age': 18} <class 'dict'> |
字典的使用
增加操作
1.直接增加
d = dict([('name','孙悟空'),('age',18)]) |
运行结果为
{'name': '孙悟空', 'age': 18} |
2.通过setdefault来增加
setdefault语法
dict.setdefault(key[, default]) |
如果key已经存在于字典中,则返回key的值,不会对字典做任何操作
如果key不存在,则向字典中添加这个key,并设置value
d = dict([('name','孙悟空'),('age',18)]) |
运行结果为
{'name': '孙悟空', 'age': 18} |
删除操作
1.删除字典
和列表还有元组一致,也是使用del关键字删除字典
d = dict([('name','孙悟空'),('age',18)]) |
运行结果为
{'name': '孙悟空', 'age': 18} |
2.删除一个key
有pop和popitem两种方法
pop是指定删除一个key
popitem是随机删除一个key
pop()这个方法在说列表的时候其实我们已经用到过了
d = dict([('name','孙悟空'),('age',18)]) |
运行结果为
{'name': '孙悟空', 'age': 18} |
popitem()
d = dict([('name','孙悟空'),('age',18)]) |
运行结果为
{'name': '孙悟空', 'age': 18} |
3.清空字典
clear()这个方法在说列表的时候其实我们已经用到过了
d = dict([('name','孙悟空'),('age',18)]) |
运行结果为
{'name': '孙悟空', 'age': 18} |
修改操作
1.直接修改
d = dict([('name','孙悟空'),('age',18)]) |
运行结果为
{'name': '孙悟空', 'age': 18} |
2.通过update修改
d = dict([('name','孙悟空'),('age',18)]) |
运行结果为
{'name': '孙悟空', 'age': 18} |
查找操作
1.直接查找
d = dict([('name','孙悟空'),('age',18)]) |
运行结果为
{'name': '孙悟空', 'age': 18} |
2.通过get查找
d = dict([('name','孙悟空'),('age',18)]) |
运行结果为
{'name': '孙悟空', 'age': 18} |
3.查找key
d = dict([('name','孙悟空'),('age',18)]) |
运行结果为
{'name': '孙悟空', 'age': 18} |
4.查找value
d = dict([('name','孙悟空'),('age',18)]) |
运行结果为
{'name': '孙悟空', 'age': 18} |
本文到此结束,下文静等更新…(未完待续)
说明一下,在字符串,列表,字典,他们自身带有的方法太多了,这里限于篇幅是不可能一一写完的,很多方法可能都没有写到,想要更多方法的具体使用细节,可以自行查找相关资料
(下文更新集合和hash)
感谢你的阅读