2.4字典(dict)
字典基础d={key1:value1,key2:value2}
字典跟列表一样,是一种可变容器模型,可以存储任意类型的对象。值(value)可以取任何数据类型,但键(key)必须是不可变的,如字符串,数字或元组,使用可变类型,比如列表等,会报错。
字典的每个键值(key:value)之间用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中;字典中的key/value对是没有顺序的,因此他不属于序列,如果你需要一个特定顺序,需要在使用之前对其排序,从字典中查找数据(哈希)比序列要快
2.4.1新增(dict[key]=value)
dict[key]=value:往字典dict中新增一个key/value对
>>> dict={}
>>> dict["name"]="pangwei"
>>> dict["age"]=25
>>> dict["sex"]="m"
>>> dict
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>>
2.4.2修改(dict[key]=value)
dict[key]=value:往字典中修改内容的方法就是新增键值对,通过key值修改value值,无法通过value值修改key值。
>>> dict
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> dict["age"]=26
>>> dict
{'age': 26, 'name': 'pangwei', 'sex': 'm'}
>>>
2.4.3删除(del dict[key];del dict;dict.pop(key);dict.popitem();dict.clear())
del dict[key]:删除dict中键为key的键值对
>>> dict
{'age': 26, 'name': 'pangwei', 'sex': 'm'}
>>> del dict["sex"]
>>> dict
{'age': 26, 'name': 'pangwei'}
>>>
del dict:删除整个字典
>>> dict1={'age': '25', 'name': 'pangwei', 'sex': 'm'}
>>> del dict1
>>> dict1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'dict1' is not defined
>>>
dict.pop(key):取出字典中键为key的value值并删除该键值对
>>> dict={'age': '25', 'name': 'pangwei', 'sex': 'm'}
>>> dict.pop("age")
'25'
>>> dict
{'name': 'pangwei', 'sex': 'm'}
>>>
dict.popitem():随机取出并删除dict中的一个键值对
>>> dict={'age': '25', 'name': 'pangwei', 'sex': 'm'}
>>> dict.popitem()
('age', '25')
>>> dict
{'name': 'pangwei', 'sex': 'm'}
>>>
dict.clear():清空指定字典
>>> dict={'age': '25', 'name': 'pangwei', 'sex': 'm'}
>>> dict.clear()
>>> dict
{}
>>>
2.4.4字典访问
dict [key]:返回键为指定内容的value值
>>> a
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> a["sex"]
'm'
>>>
dict.keys();dict.values();dict.items():用列表输出dict中所有的key值;用列表输出dict中所有的value值;用列表输出dict中所有的key/value对,每一对存于一个元组中
>>> a
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> a.keys()
['age', 'name', 'sex']
>>> a.values()
[25, 'pangwei', 'm']
>>> a.items()
[('age', 25), ('name', 'pangwei'), ('sex', 'm')]
>>>
for k in dict.keys():查询字典dict中所有key值
>>> a
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> for k in a.keys():
... print k
...
age
name
sex
>>>
for v in dict.values():查询字典dict中所有value值
>>> a
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> for v in a.values():
... print v
...
25
pangwei
m
>>>
for k, v in dict.items():查询字典dict中所有key和value值
>>> a
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> for k,v in a.items():
... print k,v
...
age 25
name pangwei
sex m
>>>
2.4.5字典内置函数(cmp(dict1,dict2);len(dict))
cmp(dict1,dict2):比较两个字典元素
>>> a={'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> b={'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> cmp(a,b)
0
>>> c={'bge': 90, 'same': 'pangwei'}
>>> cmp(a,c)
1
>>> d={1:11,2:22,3:33,4:44}
>>> cmp(a,d)
-1
>>>
len(dict):返回字典元素个数
>>> a={'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> len(a)
3
>>>
2.4.6字典内置方法
dict.copy():返回一个字典的浅拷贝 注意:拷贝只是将字典复制到了另一个内存地址,是一个独立的存在,跟原字典不存在联系
>>> a
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> a.copy()
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> id(a)
40973992L
>>> id(a.copy())
40974536L
>>> a
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> b=a.copy()
>>> b
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> a["age"]=26
>>> a
{'age': 26, 'name': 'pangwei', 'sex': 'm'}
>>> b
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> a["cost"]=100
>>> a
{'age': 26, 'cost': 100, 'name': 'pangwei', 'sex': 'm'}
>>> b
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>>
dict.fromkeys(seq,value=None):创建一个新的字典,以序列seq中的元素作为字典的key值,以value作为所有key值对应的初始value值,value为非必传参数,如果不传则默认为None
>>> dict.fromkeys("abcd",0)
{'a': 0, 'c': 0, 'b': 0, 'd': 0}
>>> dict.fromkeys("abcd")
{'a': None, 'c': None, 'b': None, 'd': None}
>>>
dict.get(key,default=None):返回指定键的value值,如果键不在字典中,返回default值
>>> a
{'cost': 100, 'name': 'pangwei', 'sex': 'm'}
>>> a.get("age")
>>> a.get("cost")
100
>>> a.get("age","error")
'error'
>>>
dict.setdefault(key,default=None):返回指定键的value值,如果键不在字典中,将会添加键并将值设为default
>>> a
{'cost': 100, 'name': 'pangwei', 'sex': 'm'}
>>> a.setdefault("cost",10)
100
>>> a.setdefault("age",25)
25
>>> a
{'age': 25, 'cost': 100, 'name': 'pangwei', 'sex': 'm'}
>>>
dict.has_key(key):判断键是否在字典里面,如果键在字典dict里返回True,否则返回False
>>> a
{'cost': 100, 'name': 'pangwei', 'sex': 'm'}
>>> a.has_key("age")
False
>>> a.has_key("cost")
True
>>>
dict.update(dict2):把字典dict2的键/值对更新到dict里,注意:如果dict和dict2中有相同的key值,则对应的value值也会被更新
>>> a
{'age': 25, 'name': 'pangwei', 'sex': 'm'}
>>> d
{2: 22, 3: 33, 'age': 27}
>>> a.update(d)
>>> a
{2: 22, 3: 33, 'name': 'pangwei', 'age': 27, 'sex': 'm'} #字典a中”age”更新了
>>>