python字典創建和使用實例詳解

字典是python中唯一內建的映射類型。字典中的值並沒有特殊的順序,但是都存儲在一個特定的鍵(key)裏。
鍵可以是數字,字符串甚至是元組。
1. 創建和使用字典
字典可以通過下面的方式創建:
複製代碼 代碼如下:

phonebook = {‘Alice’:’2341’,’Beth’:’9102’,’Ceil’:’3258’}

字典由多個鍵及與其對應的值構成的對組成。每個鍵和它的值之間用冒號(:)隔開,項之間用逗號(,)隔開,而整個字典是由一對大括號括起來。空字典:{}

1.1 dict函數
可以用dict函數通過映射(比如其他字典)或者(鍵,值)這樣的序列建立字典。
複製代碼 代碼如下:

items = [(‘name’,’Gumby’),(‘age’.42)]
d = dict(items)
d
{‘age’:42,’name’:’Gumby’}
d = dict(name=’Gumby’,’age’=42)
d
{‘age’:42,’name’:’Gumby’}

1.2 基本字典操作
(1)len(d)返回d中項(鍵-值對)的數量;
(2)d[k]返回關聯到k上的值;
(3)d[k]=v將值v關聯到鍵k上;
(4)del d[k]刪除鍵爲k的項;
(5)k in d檢查d中是否有含鍵爲k的項;

1.3 字典的格式化字符串
字典格式化字符串:在每個轉換說明符中的%字符後面,可以加上(用圓括號括起來的)鍵,後面再跟上其他說明元素。
只要所有給出的鍵都能在字典中找到,就可以獲得任意數量的轉換說明符。
複製代碼 代碼如下:

temple = ‘the price of cake is %(milk)s. price=cake:4,milk:5printtemplethepriceofcakeis 4,the price of milk of cake is 5. 4 is OK’

1.4 字典方法
1.4.1 clear
clear方法清除字典中所有的項,這是個原地操作,無返回值(或者說返回none)。
考慮下面2種情況:
a.將x關聯到一個新的空字典來清空它,這對y一點影響都沒有,y還是關聯到原先的字典
複製代碼 代碼如下:

x = {}
y = x
x[‘key’] = ‘value’
y
{‘key’:’value’}
x = {}
y
{‘key’:’value’}

b.如果想清空原始字典中所有的元素,必須用clear方法。
複製代碼 代碼如下:

x = {}
y = x
x[‘key’] = ‘value’
y
{‘key’:’value’}
x.clear()
y
{}

1.4.2 copy
copy方法返回一個具有相同鍵-值對的新字典(這個方法實現的是淺複製,因爲值本身是相同的,而不是副本)
在副本中替換值時,原始字典不受影響,但是如果修改了某個值,原始字典會改變。]
複製代碼 代碼如下:

x = {‘a’:1,’b’:[2,3,4]}
y = x.copy()
y[‘a’] = 5
y[‘b’].remove(3)
y
{‘a’:5,’b’:[2,4]}
x
{‘a’:1,’b’:[2,4]}

避免這個問題的方法是使用深度複製-deepcopy(),複製其包含所有的值。
複製代碼 代碼如下:

x = {‘a’:1,’b’:[2,3,4]}
y = x.copy()
z = x.deepcopy()
x[‘a’].append(5)
y
{‘a’:1,5,’b’:[2,3.4]}
z
{‘a’:1,’b’:[2,3,4]}

1.4.3 fromkeys
fromkeys方法使用給定的鍵建立新的字典,每個鍵默認對應的值爲None,可以直接在所有字典的類型dict上調用此方法。如果不想使用默認值,也可以自己提供值。
複製代碼 代碼如下:

{}.fromkeys([‘name’,’age’])
{‘age’:None,’name’:None}

dict.fromkeys([‘name’,’age’],’unknow’)
{‘age’:’unknow’,’name’:’unknow’}

1.4.4 get
get方法是個更寬鬆的訪問字典項的方法。當使用get訪問一個不存在的鍵時,會得到None值。還可以自定義“默認”值,替換None。
複製代碼 代碼如下:

d = {}
print d.get(‘name’)
None
d.get(“name”,’N/A’)
‘N/A’
d[”name] = ‘Eric’
d.get(‘name’)
‘Eric’

1.4.5 has_key
has_key方法可以檢查字典中是否含有給出的鍵。d.has_key(k)
複製代碼 代碼如下:

d = {}
d.has_key(‘name’)
False

1.4.6 items和iteritems
items方法將所有的字典項以列表方式返回,但是列表中的每一項(鍵,值)返回時並沒有特殊的順序。iteritems方法的作用大致相同,但是會返回一個迭代器對象而不是列表:
複製代碼 代碼如下:

d = {‘a’:1,’b’:2,’c’:3}
d.items
[(‘a’,1),(‘b’,2),(‘c’,3)]
it = d.iteritems()
it

list(it)
[(‘a’,1),(‘b’,2),(‘c’,3)]

1.4.7 keys和iterkeys
keys方法將字典中的鍵以列表形式返回,而iterkeys則返回針對鍵的迭代器。

1.4.8 pop方法
pop方法用來獲得對應給定鍵的值,然後將這個鍵-值對從字典中移除。
複製代碼 代碼如下:

d = {‘a’:1,’b’:2,’c’:3}
d.pop(‘a’)
d
{‘b’:2,’c’:3}

1.4.10 setdefault
setdefault方法在某種程度上類似於get方法,就是能夠獲得與給定鍵相關聯的值,還能在字典中不含有給定鍵的情況下設定相應的鍵值。
複製代碼 代碼如下:

d = {}
d.setdefault(‘name’,’N/A’)
‘N/A’
d
{‘name’: ‘N/A’}
d.setdefault(‘name’,A)
‘N/A’

如上例,當鍵存在時,返回默認值(可選)並且相應地更新字典,如果鍵存在,那麼返回與其對應的值,但不改變字典。

1.4.11 update
update方法可以利用一個字典項更新另一個字典。提供的字典項會被添加到舊的字典中,若有相同的鍵則會進行覆蓋。
複製代碼 代碼如下:

d = {‘a’:1,’b’:2,’c’:3}
x = {‘a’:5,’d’:6}
d.update(x)
d
{‘a’: 5, ‘c’: 3, ‘b’: 2, ‘d’: 6}

1.4.12 values和itervalues
values方法以列表的形式返回字典中的值(itervalues返回值的迭代器),與返回鍵的列表不同的是,返回值列表中可以包含重複的元素。
複製代碼 代碼如下:

d = {}
d[1]=1
d[2]=2
d[3]=3
d[4]=1
d
{1: 1, 2: 2, 3: 3, 4: 1}
d.values()
[1, 2, 3, 1]

發佈了26 篇原創文章 · 獲贊 24 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章