简介
字典(dictionary)是Python中标准数据类型之一,它也是容器类型,可以存储不同的数据,并且具有可变性。字典顾名思义,就是拥有类似字典的特性,通过“键”能够快速查找对应的“值”。这种基本的数据结构称为“键值对”。广义上来说,其他标准数据类型中也存在“键值对”,只是它们的键只能是索引号,而字典的键可以是不可变的数据类型(数字、字符串和元组)。
字典的定义
将键值对用{}
包含的数据类型称为字典,有两种创建方式:
直接创建:
1 2 3 |
>>>a = {'website':'finthon.com', 'number': 520} >>>a {'website':'finthon.com', 'number': 520} |
创建了一个字典a
,它包含两个键值对,键值对的格式为键:值
。
调用dict()
函数:
1 2 3 4 5 6 7 |
>>>a = dict([['website', 'finthon.com'], ['number', 520]]) #通过列表创建 >>>a {'website':'finthon.com', 'number': 520} >>>b = dict(zip(('website', 'number'), ('finthon.com', 520))) #通过元组创建 >>>b {'website': 'finthon.com', 'number': 520} |
字典的特点
字典中的元素是由键值对构成,因此首先要搞清楚键值对的特点:
- 键必须是唯一的:因为我们是通过键来查找对应的值,所以键必须唯一;
- 键必须是不可变的数据类型:数字、字符串或元组类型;
- 一个键最好对应一个值,否则新值会替代旧值;
- 字典中的键值对是无序的:创建一个字典的时候,键值对在字典中的顺序是无序的,但这并不影响我们使用。
访问字典中的值
只要你会访问其他标准数据类型的值,那么访问字典中的值也是一样的,只是将索引号变成了更加宽泛的“值”:
1 2 3 4 5 6 |
>>>a = {'Name': 'finthon', 'Age': 1} >>>a['Name'] 'finthon' >>>a['Age'] 1 |
更新字典中的值
通过赋值操作=
增加字典中的值:
1 2 3 4 5 |
>>>a = {} >>>a['姓名'] = '小明' >>>a['年龄'] = 10 >>>a {'姓名': '小明', '年龄': 10} |
也可以修改字典中的值:
1 2 3 |
>>>a['年龄'] = 12 >>>a {'姓名': '小明', '年龄': 12} |
删除字典中的值
通过del
语句删除单个键值对:
1 2 3 4 5 6 7 |
>>> a = {'website': 'finthon', 'age': 1, 'host': 'MrlonelyZC88'} >>>a {'website': 'finthon', 'age': 1, 'host': 'MrlonelyZC88'} >>>del a['host'] >>>a {'website': 'finthon', 'age': 1} |
通过clear()
函数清空整个字典:
1 2 3 |
>>>a.clear() >>>a {} |
通过del
语句删除整个字典:
1 |
>>>del a |
字典内置函数
字典内置函数如下:
函数 | 描述 |
---|---|
len(dict) | 返回键值对的个数 |
str(dict) | 将字典以字符串形式打印 |
type(dict) | 返回字典的类型 |
代码演示:
1 2 3 4 5 6 7 8 9 |
>>>a = {'website': 'finthon', 'age': 1, 'host': 'MrlonelyZC88'} >>>len(a) 3 >>>str(a) "{'website': 'finthon', 'age': 1, 'host': 'MrlonelyZC88'}" >>>type(a) dict |
字典方法
字典方法如下:
函数 | 描述 |
---|---|
dict.clear() | 清空字典内所有元素 |
dict.copy() | 返回一个字典的浅复制 |
dict.fromkeys(seq, val=None) | 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
dict.get(key, default=None) | 返回指定键的值,如果值不在字典中返回default值 |
key in dict | 如果键在字典dict里返回true,否则返回false |
dict.items() | 以列表返回可遍历的(键, 值) 元组数组 |
dict.keys() | 返回一个迭代器,可以使用 list() 来转换为列表 |
dict.setdefault(key, default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
dict1.update(dict2) | 把字典dict2的键/值对更新到dict1里 |
dict.values() | 返回一个迭代器,可以使用 list() 来转换为列表 |
dict.pop(key, default) | 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值 |
dict.popitem() | 随机返回并删除字典中的一对键和值(一般删除末尾对) |
代码演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
>>>a = {1: 'a', 2: 'b'} >>>b = a.copy() #复制字典 >>>b {1: 'a', 2: 'b'} >>>{}.fromkeys('abc') {'a': None, 'b': None, 'c': None} >>>a.get(2) 'b' >>>3 in a #判断键是否在字典中 False >>>a.items() #返回的是一个迭代器,可以用list()转换成列表 dict_items([(1, 'a'), (2, 'b')]) >>>a.keys() #返回的是一个迭代器,可以用list()转换成列表 dict_keys([1, 2]) >>>a.setdefault(3) >>>a {1: 'a', 2: 'b', 3: None} >>>b = {'name': 'xiaoming'} >>>a.update(b) >>>a {1: 'a', 2: 'b', 3: None, 'name': 'xiaoming'} >>>a.values() #返回的是一个迭代器,可以用list()转换成列表 dict_values(['a', 'b', None, 'xiaoming']) >>>a.pop('name') #删除并返回值 'xiaoming' >>>a {1: 'a', 2: 'b', 3: None} >>>a.popitem() #随机删除一个键值对 (3, None) >>>a {1: 'a', 2: 'b'} |
总结
字典这种数据类型在很多场合都有使用,比如网络爬虫中的头文件,数据挖掘pandas中构建dataframe
数据结构等。熟练掌握字典对以后深入学习python有很大帮助。