一、认识Python字典
1、Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。
2、字典由键(key)和它对应的值(value)组成,字典是python唯一的映射类型。字典也被称为关联数组或哈希表。
3、字典中的键必须独一无二,但值不必。创建时如果同一个键被赋值两次,后一个值会被记住。
4、键必须不可变,可以用数字、字符串或元组充当,但是不可以用列表。常用字符串作为键。
二、创建字典
1、使用工厂方法dict()创建字典 #不常用
例:a=dict((['name','emma'],['age',18])) #--里面是一个大的元组,元组里面以列表的方式写键和值
2、内建方法fromkeys(),字典中的元素具有相同的值,默认为None #不常用
例:b={}.fromkeys((‘x’,’y’),1)
3、常用方法:dict={key:value}
例:a={'name':'emma','age':18}
三、查看字典
keys() #返回键列表
values() #返回值列表
items() #返回键值对的元组
has_key(key) #返回是否含有该key
dict[key] #查看字典中的值
dict.get(key,value) #查看字典中的值,字典项多时可用。如果key不存在,则返回指定值value.
例:
#返回键列表
>>> a={'name':'emma','age':18}
>>> a.keys()
['age', 'name']
#返回值列表
>>> a.values()
[18, 'emma']
#返回键值对的元组
>>> a.items()
[('age', 18), ('name', 'emma')]
#返回是否含有该key
>>> a.has_key('weight')
False
>>> a.has_key('age')
True
#查看字典中的值
>>> a['name']
'emma'
#查看字典中的值
>>> a.get('name','emma')#查看字典中name为emma的,字典项多时可用
'emma'
>>> a.get('name')#查看name的值,name必须是一个值
'emma'
四、遍历字典
1、for key in dict:
print key,dict[key]
例:
>>>a={'name':'emma','age':18}
>>>for k in a:
print k,a[k]
age 18
name emma
2、for key,value in dict.items():
print key,value
例:
>>>a={'name':'emma','age':18}
>>>for k,v in a.items():
print k,v
age 18
name emma
五、增删改字典
1、增、改:dict[key]=value #1)字典中不存在该键值,则增加;2)存在该键值,则修改。
例1):增加
>>>a={'name':'emma','age':18,'city':'Beijing'}
>>>a['weight']=50
>>>print a
{'city':'Beijing', 'age': 18, 'name': 'emma', 'weight': 50}#增加
例2):修改
>>>a['age']=20
>>>a
{'city':'Beijing', 'age': 20, 'name': 'emma', 'weight': 50}#修改
2、字典间更新:dict1.update(dict2) #更新dict2到dict1,无则添加,重复则覆盖
例:
>>>a={'name':'emma','age':18,'city':'Beijing'}
>>>b={'age':20,'gender':'female'}
>>>a.update(b)#更新字典b到a中,age被覆盖,gender被添加
>>>a
{'city':'Beijing', 'age': 20, 'name': 'emma', 'gender': 'female'}
3、删:1)del dict[key];2)del dict;3)dict.pop(key)
例1):del dict[key] #删除某个键值
>>>a={'name':'emma','age':18,'city':'Beijing'}
>>>del a['city']
>>>a
{'age':18, 'name': 'emma'}
例2):del dict #删除整个字典
>>>a={'name':'emma','age':18,'city':'Beijing'}
>>>del a
>>>a #字典a被删除,不存在
Traceback(most recent call last):
File "", line 1,in
a
NameError:name 'a' is not defined
例3):dict.pop(key) #先弹出待删除值,再删除。此删除属于破坏性操作,慎用此方法。
>>>a={'name':'emma','age':18,'city':'Beijing'}
>>>a.pop('city')
'Beijing' #弹出待删除值
>>>a
{'age':18, 'name': 'emma'}
4、清空:dict.clear() #清空后内存中还存在这个字典
>>>a={'name':'emma','age':18,'city':'Beijing'}
>>>a.clear()
>>>a
{} #内存中还存在,只是被清空
知识拓展:
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
set可以看成数学意义上的无序和无重复元素的集合。
详见:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868193482529754158abf734c00bba97c87f89a263b000
小结:
1、通过in判断key是否存在:
>>>'emma' in dict
False
2、dict内部存放的顺序和key放入的顺序是没有关系的。
3、和list比较,dict有以下几个特点:
1)查找和插入的速度极快,不会随着key的增加而增加;
2)需要占用大量的内存,内存浪费多。
而list相反:
1)查找和插入的时间随着元素的增加而增加;
2)占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。