Python 知识量:10 - 41 - 150
字典是Python的一种利用键-值对组织数据的数据结构。通过字典可以高效的利用键来访问字典值,而且,字典是可变的,允许创建后再添加、删除或修改键-值对。
结构上,字典数据由花括号括起来,每个元素以逗号分隔,元素的结构则由键-值对组成,键与值之间以冒号分隔。
>>> age={'Jeff':35,'Lucy':28,'Bob':44} >>> age {'Jeff': 35, 'Lucy': 28, 'Bob': 44} >>> age['Bob'] 44 >>> age['Bob']=33 >>> age {'Jeff': 35, 'Lucy': 28, 'Bob': 33}
由字典的结构可以看出,字典与Java等编程语言中的关联数组相似,实际上,字典也称为关联数组、映射或散列表。在具体实现中,字典的每个键会被转换为一个散列值,散列值由散列函数自动计算给出,散列值作为实际的索引以实现数值的检索。
在使用字典时,对键来说有两条限制:
键必须是独一无二的。
键必须是不可变的。
独一无二意味着,在同一个字典中,任何两个键的名称不能相同,例如:
>>> age={'Jeff':35,'Bob':22,'Lucy':28,'Bob':44} >>> age {'Jeff': 35, 'Bob': 44, 'Lucy': 28}
虽然定义了两个名为“Bob”的键,但最终只存储了一对该名称的键-值对,且其值为最后一次定义的值。
键的不可变很好理解,前面提到过键最终由散列值来表示,任何名称的改变都会意味着散列值的改变,也就改变了索引位置,原来的键-值对就无法访问了。
Python提供的常用字典函数如下表所示:
函数名 | 功能说明 |
---|---|
d.items() | 返回一个由字典d的键-值对组成的视图。 |
d.keys() | 返回一个由字典d的键组成的视图。 |
d.values() | 返回一个由字典d的值组成的视图。 |
d.get(key) | 返回与key关联的值。 |
d.pop(key) | 删除键key并返回与之关联的值。 |
d.popitem() | 删除字典d的最后一个键-值对并返回其值。 |
d.clear() | 删除字典d的所有元素。 |
d.copy() | 复制字典d。 |
d.fromkeys(s,t) | 创建新字典,其键来自s,值来自t。 |
d.setdefault(key,v) | 如果键key包含在字典d中,返回其值;否则返回v,并将“key:v”添加到字典中。 |
d.update(e) | 将e中的键-值对添加到字典d中,e可以是字典,也可以是键-值对序列。 |
以上函数中,d.get(key)的功能与d[key]一样,用于获取字典中的值,但如果字典中没有找到该键,这两种方法都会引发KeyError异常。因此,在获取字典值时,可以先通过key in d语句检查一下key是否在字典中。
函数pop(key)和popitem()都可以用于删除并获取字典值,区别是pop(key)删除key指定的值,其参数必须给出,而popitem()总是删除最后一个键-值对。
函数items()、keys()和values()都用于返回一个视图,视图是临时构建的,并不实际存在于系统中。视图是字典的映射,就像照片一样,但它是根据需要加工后的照片。当字典发生变化时,视图也随之改变。例如下面的示例:
>>> age={'Jeff':35,'Lucy':28,'Bob':44} >>> keys=age.keys() >>> keys dict_keys(['Jeff', 'Lucy', 'Bob']) >>> values=age.values() >>> values dict_values([35, 28, 44]) >>> items=age.items() >>> items dict_items([('Jeff', 35), ('Lucy', 28), ('Bob', 44)]) >>> age.popitem() ('Bob', 44) >>> keys dict_keys(['Jeff', 'Lucy'])
集合就是一系列不重复的元素,它类似于字典,但只包含键,没有值。
集合可以分为两类:可变集合和不可变集合。可变集合在集合创建后依然可以添加或删除元素;不可变集合一旦创建就不能改变其元素。可以使用花括号或者函数set()创建集合。
集合常用于删除序列中的重复元素,例如:
>>> number=[1,5,3,6,5,4,5,6,2,3,8,7,7,1,5] >>> n=set(number) >>> n {1, 2, 3, 4, 5, 6, 7, 8} >>> number=[1,5,885,454,22,14,522,14,5,885,478746] >>> n=set(number) >>> n {1, 5, 454, 522, 14, 885, 22, 478746}
注意:集合元素的排列顺序也是不确定的。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6