字典:
1)字典中的元素是通过键来存储的,而不是通过偏移来存取的。字典是唯一内置的映射类型(键映射到值的对象)
2)是无序集合;
3)字典是作为散列表(支持快速检索的数据结构)来实现的。Python采用最优化的散列算法来寻找键,因此搜索是很快速的。
key对应的是不可变数据类型,和哈希数据类型,如bool、int、str、元组;
value对应的则是任意数据类型。
常见字典常量和操作:
操作 | 功能 |
D = {} | 空字典 |
D = {'spam': 2, 'eggs': 3} | 两项目字典 |
D = {'food': {'ham': 1, 'egg': 2}} | 嵌套 |
D = dict.fromkeys(['a', 'b']) | 其他构造技术 |
D = dict(zip(keyslist, valslist)) | |
D = dict(name = 'Bob', age=42) | |
D ['eggs'] | 以键进行索引运算 |
D['food']['ham'] | 以键进行索引运算 |
‘eggs’ in D | 成员运算 键存在测试 |
D.keys() | 方法,获取键 |
D.values() | 方法获取值 |
D.items() | 获取键+值 |
D.copy() | 副本 |
D.get(key, default) | 默认 |
D.update(D2) | 合并 |
D.pop(key) | 删除 |
len(D) | 长度 |
D[key]=value | 新增、修改键、删除键 |
del D[key] | 根据键删除条目 |
list(D.keys()) | 字典视图 |
D1.keys() & D2.keys() | |
Dictionary views | |
D = {x: x*2 for x in range(10)} | 字典解析 |
例1:打印键和值,不使用元组的方式:
people = ['name': 'Alex', 'age': 18, 'height': 175]
for k, v in people.items():
print(k, v)
例2:字典的增删改查的方法:
增:
D[key]=value 删除、修改键;
D.setdefault('weight, 100) 有键值就不做任何改变;
删:
D.pop('age') 删除age键,有返回值;
D.pop('age1', 'No keys') 设置错误提示信息
D.popitem() 随机删除
D.clear() 清空字典
del D['name'] 删除元素,尽量使用pop,如果没有键,则会报错。
改:
D.update 合并(没有就加进来,有就覆盖)
查:
D.keys()
D.values()
D.items()
D.get(keys, default): 第二个参数是错误信息提示;
例3:将列表元素进行分类:
L = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
D = {}
L_greater_66 = []
L_less_66 = []
for i in L:
if i == 66:
continue
elif i > 66:
L_greater_66.append(i)
else:
L_less_66.append(i)
D['k1'] = L_greater_66
D['k2'] = L_less_66
print(D)