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