字典的用法,dict的查找特別快捷。如果我們的項目經常用到搜索某些數據,最好用dict類型。
### 認識dict[?](http://uliweb.clkg.org/tutorial/view_chapter/176#title_0-0-1)
~~~
peter@智普教育:~$ python
Python 2.7.3 (default, Aug 1 2012, 05:16:07)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a={"name":"jike","age":30,"job":"python優秀工程師","level":"智普小天才"}
>>> print a["level"]
智普小天才
>>> print a["age"]
30
~~~
這就是字典,今年30歲的python工程師是一個天才。 和數據庫結合非常完美。制作一個電話聯系人也很實用。
上面的"name","age"等叫做key;
"jike",30,"智普小天才",叫做value。
獲取所有的keys。
~~~
>>> a={"name":"jike","age":30,"job":"python優秀工程師","level":"智普小天才"}
>>> b = a.keys()
>>> print b
['job', 'age', 'name', 'level']
>>> type(b)
<type 'list'>
>>> c = a.values()
>>> print c
['python\xe4\xbc\x98\xe7\xa7\x80\xe5\xb7\xa5\xe7\xa8\x8b\xe5\xb8\x88', 30, 'jike', '\xe6\x99\xba\xe6\x99\xae\xe5\xb0\x8f\xe5\xa4\xa9\xe6\x89\x8d']
>>> type(c)
<type 'list'>
>>>
~~~
上面的代碼,你看懂了嗎? 請解釋一下。
注意:上面print c的時候有些亂碼是python控制臺的原因。
### 給dict添加內容[?](http://uliweb.clkg.org/tutorial/view_chapter/176#title_0-0-2)
~~~
a={}
a['email']='cool@jeapedu.com'
~~~
這樣做可以嗎?請試試。 list可以做如下動作嗎?為什么?
~~~
list=[]
list[5]=10
~~~
### 刪除操作[?](http://uliweb.clkg.org/tutorial/view_chapter/176#title_0-0-3)
~~~
peter@智普教育:~$ python
Python 2.7.3 (default, Aug 1 2012, 05:16:07)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a={"name":"jike","age":30,"job":"python優秀工程師","level":"智普小天才"}
>>> for b in a: print b
...
job
age
name
level
>>> a.pop("name")
'jike'
>>> print a
{'job': 'python\xe4\xbc\x98\xe7\xa7\x80\xe5\xb7\xa5\xe7\xa8\x8b\xe5\xb8\x88', 'age': 30, 'level': '\xe6\x99\xba\xe6\x99\xae\xe5\xb0\x8f\xe5\xa4\xa9\xe6\x89\x8d'}
>>>
>>> del a["job"]
>>> print a
{'age': 30, 'level': '\xe6\x99\xba\xe6\x99\xae\xe5\xb0\x8f\xe5\xa4\xa9\xe6\x89\x8d'}
~~~
### 如何判斷key是否存在?[?](http://uliweb.clkg.org/tutorial/view_chapter/176#title_0-0-4)
~~~
>>> a["age"]
30
>>> a["name"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'name'
~~~
直接用會出錯。
用for key in a: ?
還有更好的方法嗎?
答案
[code-comment](http://uliweb.clkg.org/wiki/code-comment)?: n1761:a.has_key("name")
獲取鍵值的方法
~~~
a.get("age")
a["age"]
~~~
區別是什么?
a.get比a["name"]更安全,如果key不存在。get函數返回空None,但不會出錯。
update函數的用法
~~~
>>> print a
{'age': 30, 'level': '\xe6\x99\xba\xe6\x99\xae\xe5\xb0\x8f\xe5\xa4\xa9\xe6\x89\x8d'}
>>> a1={"hello":1}
>>> a.update(a1)
>>> print a
{'age': 30, 'hello': 1, 'level': '\xe6\x99\xba\xe6\x99\xae\xe5\xb0\x8f\xe5\xa4\xa9\xe6\x89\x8d'}
~~~
### 獲取key,value的另一個方法
~~~
In [4]: d.items()
Out[4]: [(1, 'a'), (2, 'b'), (3, 'c')]
~~~
- Python爬蟲入門
- (1):綜述
- (2):爬蟲基礎了解
- (3):Urllib庫的基本使用
- (4):Urllib庫的高級用法
- (5):URLError異常處理
- (6):Cookie的使用
- (7):正則表達式
- (8):Beautiful Soup的用法
- Python爬蟲進階
- Python爬蟲進階一之爬蟲框架概述
- Python爬蟲進階二之PySpider框架安裝配置
- Python爬蟲進階三之Scrapy框架安裝配置
- Python爬蟲進階四之PySpider的用法
- Python爬蟲實戰
- Python爬蟲實戰(1):爬取糗事百科段子
- Python爬蟲實戰(2):百度貼吧帖子
- Python爬蟲實戰(3):計算大學本學期績點
- Python爬蟲實戰(4):模擬登錄淘寶并獲取所有訂單
- Python爬蟲實戰(5):抓取淘寶MM照片
- Python爬蟲實戰(6):抓取愛問知識人問題并保存至數據庫
- Python爬蟲利器
- Python爬蟲文章
- Python爬蟲(一)--豆瓣電影抓站小結(成功抓取Top100電影)
- Python爬蟲(二)--Coursera抓站小結
- Python爬蟲(三)-Socket網絡編程
- Python爬蟲(四)--多線程
- Python爬蟲(五)--多線程續(Queue)
- Python爬蟲(六)--Scrapy框架學習
- Python爬蟲(七)--Scrapy模擬登錄
- Python筆記
- python 知乎爬蟲
- Python 爬蟲之——模擬登陸
- python的urllib2 模塊解析
- 蜘蛛項目要用的數據庫操作
- gzip 壓縮格式的網站處理方法
- 通過瀏覽器的調試得出 headers轉換成字典
- Python登錄到weibo.com
- weibo v1.4.5 支持 RSA協議(模擬微博登錄)
- 搭建Scrapy爬蟲的開發環境
- 知乎精華回答的非專業大數據統計
- 基于PySpider的weibo.cn爬蟲
- Python-實現批量抓取妹子圖片
- Python庫
- python數據庫-mysql
- 圖片處理庫PIL
- Mac OS X安裝 Scrapy、PIL、BeautifulSoup
- 正則表達式 re模塊
- 郵件正則
- 正則匹配,但過濾某些字符串
- dict使用方法和快捷查找
- httplib2 庫的使用