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):取出字典中键为keyvalue值并删除该键值对

>>> 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中所有keyvalue

>>> 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,注意:如果dictdict2中有相同的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”更新了

>>> 

posted on 2018-01-04 15:09  流雲飞羽  阅读(1166)  评论(0编辑  收藏  举报