1.字典的定义
- 字典类似于列表,但相对于列表来说字典更加通用,列表的下标必须必须为整数,而字典下标则可以为任意字符串/数字等,不可以是可变数据类型(列表,数组,元组)
- 字典包含下标(keys)集合和值(vaule)集合,且keys是唯一的
2.字典的创建
实例如下:
1 d1={'name':'alex','age':18,1:'85'} 2 d2={} 3 d2['name']='john' 4 d2['age']=15 5 d3=dict(name='lili',age=12) 6 d4=dict(zip(('name','age'),('tom',20))) 7 print "d1=",d1 8 print "d2=",d2 9 print "d3=",d3 10 print "d5=",d4
输入如下
1 d1= {1: '85', 'age': 18, 'name': 'alex'} 2 d2= {'age': 15, 'name': 'john'} 3 d3= {'age': 12, 'name': 'lili'} 4 d4= {'age': 20, 'name': 'tom'}
3.字典的特性
- 无序性
字典最终显示的值是不会按照插入的先后顺序所决定的。因为字典的本质是hash table,而Hash的本质是, 将一数列作为Key尽量平均分配另一个数列Value到程序已经申请好的Array上。
- 键值唯一性
字典中的键值是唯一(重复的只会保存一个)
4.字典的基本操作
- 修改字典
1 #coding=utf-8
2 d1 = {'name':'alex'}
3 print '字典修改前:', d1 4 d1['name']='Bod' 5 print '字典修改后:' ,d1
实例输出结果:
1 字典修改前: {'name': 'alex'} 2 字典修改后: {'name': 'Bod'}
- 字典访问
1 #coding=utf-8 2 d1 = {'name':'alex','age':18} 3 print 'd1["name"]:',d1["name"] 4 print 'd1["age"]:',d1["age"]
实例输出结果:
1 d1["name"]: alex 2 d1["age"]: 18
键值不存在的情况无法通过该方法获取值,会抛出异常
- 字典删除
1 #coding=utf-8 2 3 #删除某个键 4 d1 = {'name':'alex','age':18} 5 print '删除前字典内容:',d1 6 del d1['name'] 7 print '删除后字典内容:',d1 8 9 #清空字典 10 d2={'name':'alex','age':18} 11 print '清空前字典内容:',d2 12 d2.clear() 13 print '清空后字典内容:',d2 14 15 16 #删除字典 17 d3={'name':'alex','age':18} 18 print '删除前字典内容:',d3 19 del d3 20 #捕获异常 21 try: 22 print '删除后字典内容:',d3 23 except NameError: 24 print 'd3不存在'
实例输出结果:
1 删除前字典内容: {'age': 18, 'name': 'alex'} 2 删除后字典内容: {'age': 18} 3 清空前字典内容: {'age': 18, 'name': 'alex'} 4 清空后字典内容: {} 5 删除前字典内容: {'age': 18, 'name': 'alex'} 6 删除后字典内容: d3不存在
删除字典指定键值时,需要确保键值存在,否则会抛出异常
5.字典的内置函数
函数名称 | 函数作用 | 函数结果 |
cmp({"name":"alex"},{"name":"Bob"}) | 比较两个字典是否相同 | 完全相同返回0 |
len({"name":"alex"}) | 计算字典键的个数 | 1 |
str({"name":"alex"}) | 将字典转为字符串 | "{'name': 'alex'}" |
type({"name":"alex"}) | 输出类型 | dict |
dict1.clear() | 删除字典所有键值 | |
dict1.copy() | 复制字典 | |
dict.fromkeys(seq,vaule) | 创建字典,以seq为key,value为值 | |
dict1.get(key) | 根据key获取vaule,如果可以存在,则获取值,不存在,则返回None | |
dict1.has_key(key) | 判断key是否存在,存在返回True,不存在Flase | |
dict1.items() | 以列表返回可遍历的(键, 值) 元组数组 | |
dict1.keys() | 以列表返回所有key | |
dict1.setdefault() | 和get功能相同 | |
dict1.values() | 以列表返回字典所有值 | |
dict1.update(dict2) | 将dict2添加到dict1中 | |
dict1.iteritems() | 返回一个迭代器 | |
dict1.pop(key) | 与del功能相同 | |
dict1.popitem() | 删除,并有返回值,字典为空时调用该方法抛出异常 |