第四章 字典:當索引不好用時

字典:python中唯一內建的映射類型,本質就是鍵-值對。通過鍵和值關聯

4.1字典的使用

通過鍵來找值,而不必用索引

4.2創建和使用字典

phonebook={'Alice':'2341','Beth':'9102','Cecil':'3258'}

note:字典中的鍵是唯一的,而值不唯一。

4.2.1 dict函數

創建字典更方便:

>>>items=[('name','Gumby'),('age',42)]

>>>d=dict(items)

>>>d

{'age':42, 'name': 'Gumby'}

>>>d['name']

'Gumby'

 

dict函數不是真正的函數,和list、tuple、str一樣是個類型。

4.2.2 基本字典操作

len(d):返回d中項(鍵值對)數量

d[k]:返回關聯到鍵k上的值

d[k]=v:將值v關聯到鍵k上

del d[k]:刪除鍵爲k的項

k in d :檢查d中是否有含有鍵爲k的項

4.2.3字典的格式化字符串

>>>phonebook={'Alice':'2341','Beth':'9102','Cecil':'3258'}

>>>"%(Cecil)s" % phonebook

'3258'

4.2.4字典方法
1.clear

清除字典中所有項,這個是原地操作

2.copy

返回一個具有相同鍵值對的新字典(實現的是淺複製):替換不改變,原地修改會改變(增加或減少)

可以使用深複製函數:deepcopy

3.fromkeys

使用給定的鍵建立新的字典,每個鍵都對應一個默認的值None

>>>{}.fromkeys(['name','age'])

{'age':None, 'name': None}

>>>dict.fromkeys(['name','age'],'(unknown)')#可設置默認值

{'age':'(unknown)', 'name': '(unknown)'}

 

使用dict不用創建一個空字典

4.get

更寬鬆的訪問字典項的方法,訪問不存在的項時不會出錯

>>>d={}

>>>print d["dsa"]

 

Traceback(most recent call last):

  File "<pyshell#11>", line 1,in <module>

    print d["dsa"]

KeyError:'dsa'

 

使用get

>>>print d.get('dsa','N/A')#默認返回None,可改

N/A

5.has_key

檢查字典中是否含有特定的鍵,相當於k in d.

6.items和iteritems

Items:將字典所有項以列表形式返回,不遵循次序

>>>d={'name':'zhangsan','age':'43'}

>>>d.items()

[('age','43'), ('name', 'zhangsan')]

 

Iteritems類似,不過返回的是迭代器

>>>it=d.iteritems()

>>>it

<dictionary-itemiteratorobject at 0x02EBC210>

>>>list(it)

[('age','43'), ('name', 'zhangsan')]

 

7.keys和iterkeys

Keys:鍵以列表的形式返回

Iterkeys:返回鍵的迭代器

8.pop

獲得給定鍵的值:然後將此鍵值對刪掉

>>>d.pop('age')

'43'

>>>d

{'name':'zhangsan'}

9.popitem

不用獲取鍵,而隨機彈出一個鍵值對

>>>d={'name':'zhangsan','age':'43'}

>>>d.popitem()

('age','43')

>>>d

{'name':'zhangsan'}

10.setdefault

某種程度類似於ge上增加了更新

使用get:

>>>d

{'name':'zhangsan'}

>>>d.get('age')

>>>print d.get('age')

None

使用setdefault:

>>>d.setdefault('age','34')

'34'

>>>d

{'age':'34', 'name': 'zhangsan'}

 

11.update

利用一個字典項更新另外一個字典項

>>>d={'name':'zhangsan','age':'43'}

>>>x={'age':'20'}

>>>d.update(x)

>>>d

{'age':'20', 'name': 'zhangsan'}

 

12.values和itervalues

Values:以列表的形式返回字典中的值

Itervalues:返回值的迭代器

>>>d

{'age':'34', 'name': 'zhangsan'}

>>>d.values()

['20','zhangsan']

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章