Loading

Python学习笔记6-字典Dict

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

>>> person = {"name":"keven","age":15,"gender":"male"}
>>> person['name']
'keven'
>>> type(person)
<type 'dict'>

字典可以原地修改,即它是可变的。

>>> dict1={}
>>> id(dict1)
139736380198256
>>> dict1["name"] = "Keven"
>>> id(dict1)
139736380198256
>>> dict1
{'name': 'Keven'}

利用元组在建构字典,方法如下:

>>> name = (["first","Google"],["second","Yahoo"])
>>> website = dict(name)
>>> website
{'second': 'Yahoo', 'first': 'Google'}

或者用这样的方法:

>>> ad = dict(name="keven", age=42)
>>> ad
{'age': 42, 'name': 'keven‘

基本操作

• len(d),返回字典(d)中的键值对的数量

>>> city_code = {'suzhou': '0512', 'beijing': '011', 'shanghai': '012', 'tangshan': '0315'}
>>> len(city_code)
4


• d[key],返回字典(d)中的键(key)的值

>>> city_code["suzhou"]
'0512'

• d[key]=value,将值(value)赋给字典(d)中的键(key)

>>> city_code = {'suzhou': '0512', 'beijing': '011', 'shanghai': '012', 'tangshan': '0315'}
>>> city_code["shenzhen"]="1212"
>>> city_code
{'suzhou': '0512', 'beijing': '011', 'shanghai': '012', 'tangshan': '0315', 'shenzhen': '1212'}

• del d[key],删除字典(d)的键(key)项(将该键值对删除)

>>> del city_code["shanghai"]
>>> city_code
{'suzhou': '0512', 'beijing': '011', 'tangshan': '0315', 'shenzhen': '1212'}

• key in d,检查字典(d)中是否含有键为 key 的项

>>> "shenzhen" in city_code
True
>>> "sz" in city_code
False

字典也可以实现格式化字符

>>> city_code = {"suzhou":"0512", "tangshan":"0315", "hangzhou":"0571"}
>>> " Suzhou is a beautiful city, its area code is %(suzhou)s" % city_code
' Suzhou is a beautiful city, its area code is 0512

 字典的常用操作方法:

copy

它与赋值的方式不一样,它会在内存中另辟了一个空间,但是需要注意的是:对于不是基础类型的,比如刚才字典的值是列表,Python 不会在被复制的那个对象
中重新存储,而是用引用的方式,指向原来的值。

>>> ad = {"name":"qiwsir", "lang":"Python"}
>>> cd = ad.copy()
>>> cd
{'lang': 'Python', 'name': 'qiwsir'}
>>> id(ad)
139736371470416
>>> id(cd)
139736371472376

与赋值的差别,id并没有改变

>>> ed=ad
>>> ed
{'lang': 'Python', 'name': 'qiwsir'}
>>> id(ed)
139736371470416

clear

清空字典中所有元素的操作

>>> ad = {"name":"qiwsir", "lang":"Python"}
>>> ad.clear()
>>> ad
{}

get

dict.get() 就是要得到字典中某个键的值

>>> ad = {"name":"sir", "lang":"Python"}
>>> ad.get("name")
'sir'

setdefault

首先,它要执行D.get(k,d) ,就跟前面一样了,然后,进一步执行另外一个操作,如果键k不在字典中,就在字典中增加这个键值对。当然,如果有就没有必要执行这一步了。

>>> ad = {"name":"sir"}
>>> ad.setdefault("lang","python")
'python'
>>> ad
{'lang': 'pytghon', 'name': 'sir'}
>>> ad.setdefault("name","python")
'sir'
>>> ad
{'lang': 'python', 'name': 'sir'}

 items

D.items() 能够得到一个关于字典的列表,列表中的元素是由字典中的键和值组成的元组

>>> d={"name":"Keven","age":"20"}
>>> d.items()
[('age', '20'), ('name', 'Keven')]

iteritems

得到的是一个“迭代器”,这个迭代器是关于“D.items()”的,这种迭代器类型的数据不能直接输出,必须用list() 转换一下,才能看到里面的真面目。

>>> d={"name":"Keven","age":"20","gender":"femal"}
>>> d_iter = d.iteritems()
>>> d_iter
<dictionary-itemiterator object at 0x7f085c980ba8>
>>> type(d_iter)
<type 'dictionary-itemiterator'>
>>> list(d_iter)
[('gender', 'femal'), ('age', '20'), ('name', 'Keven')]

keys和value

>>> d={"name":"Keven","age":"20","gender":"femal"}
>>> d.keys()
['gender', 'age', 'name']
>>> d.values()
['femal', '20', 'Keven']

pop

根据key删除

>>> d={"name":"Keven","age":"20","gender":"femal"}
>>> d.pop("name")
'Keven'
>>> d
{'gender': 'femal', 'age': '20'}

popitem

D.popitem() 倒是跟list.pop() 有相似之处,不用写参数(list.pop 是可以不写参数),但是, D.popitem() 不是删除最后一个,dict 没有顺序,也就没有最后和最先了,它是随机删除一个,并将所删除的返回。

>>> d={"name":"Keven","age":"20","gender":"femal"}
>>> d.popitem()
('gender', 'femal')
>>> d
{'age': '20', 'name': 'Keven'}

update

把一个字典的值加入进来

>>> d1 = {"lang":"python"}
>>> d2 = {'age': '20', 'name': 'Keven'}
>>> d1.update(d2)
>>> d1
{'lang': 'python', 'age': '20', 'name': 'Keven'}

还可以用下面的方法更新:

>>> d1 = {"lang":"python"}
>>> d1.update([("name","Keven"),("age","16")])
>>> d1
{'lang': 'python', 'age': '16', 'name': 'Keven'}

has_key

判断字典中是否有某一个键值

>>> d={"name":"Keven","age":"20","gender":"femal"}
>>> d.has_key("name")
True
>>> "name" in d
True

 

posted @ 2016-09-04 19:22  头痛不头痛  阅读(264)  评论(0编辑  收藏  举报