python創(chuàng)建和使用字典實(shí)例詳解
更新時(shí)間:2013年11月01日 15:08:38 作者:
字典是python中唯一內(nèi)建的映射類(lèi)型。字典中的值并沒(méi)有特殊的順序,但是都存儲(chǔ)在一個(gè)特定的鍵(key)里。
字典是python中唯一內(nèi)建的映射類(lèi)型。字典中的值并沒(méi)有特殊的順序,但是都存儲(chǔ)在一個(gè)特定的鍵(key)里。
鍵可以是數(shù)字,字符串甚至是元組。
1. 創(chuàng)建和使用字典
字典可以通過(guò)下面的方式創(chuàng)建:
phonebook = {'Alice':'2341','Beth':'9102','Ceil':'3258'}
字典由多個(gè)鍵及與其對(duì)應(yīng)的值構(gòu)成的對(duì)組成。每個(gè)鍵和它的值之間用冒號(hào)(:)隔開(kāi),項(xiàng)之間用逗號(hào)(,)隔開(kāi),而整個(gè)字典是由一對(duì)大括號(hào)括起來(lái)??兆值洌簕}
1.1 dict函數(shù)
可以用dict函數(shù)通過(guò)映射(比如其他字典)或者(鍵,值)這樣的序列建立字典。
>>> 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中項(xiàng)(鍵-值對(duì))的數(shù)量;
(2)d[k]返回關(guān)聯(lián)到k上的值;
(3)d[k]=v將值v關(guān)聯(lián)到鍵k上;
(4)del d[k]刪除鍵為k的項(xiàng);
(5)k in d檢查d中是否有含鍵為k的項(xiàng);
1.3 字典的格式化字符串
字典格式化字符串:在每個(gè)轉(zhuǎn)換說(shuō)明符中的%字符后面,可以加上(用圓括號(hào)括起來(lái)的)鍵,后面再跟上其他說(shuō)明元素。
只要所有給出的鍵都能在字典中找到,就可以獲得任意數(shù)量的轉(zhuǎn)換說(shuō)明符。
>>> temple = ‘the price of cake is $%(cake)s,the price of milk of cake is $%(milk)s. $%(cake)s is OK'
>>> price = {'cake':4,'milk':5}
>>>print temple % price
‘the price of cake is $4,the price of milk of cake is $5. $4 is OK'
1.4 字典方法
1.4.1 clear
clear方法清除字典中所有的項(xiàng),這是個(gè)原地操作,無(wú)返回值(或者說(shuō)返回none)。
考慮下面2種情況:
a.將x關(guān)聯(lián)到一個(gè)新的空字典來(lái)清空它,這對(duì)y一點(diǎn)影響都沒(méi)有,y還是關(guān)聯(lián)到原先的字典
>>> 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方法返回一個(gè)具有相同鍵-值對(duì)的新字典(這個(gè)方法實(shí)現(xiàn)的是淺復(fù)制,因?yàn)橹当旧硎窍嗤?,而不是副本?BR>在副本中替換值時(shí),原始字典不受影響,但是如果修改了某個(gè)值,原始字典會(huì)改變。]
>>> 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]}
避免這個(gè)問(wèn)題的方法是使用深度復(fù)制-deepcopy(),復(fù)制其包含所有的值。
>>> 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方法使用給定的鍵建立新的字典,每個(gè)鍵默認(rèn)對(duì)應(yīng)的值為None,可以直接在所有字典的類(lèi)型dict上調(diào)用此方法。如果不想使用默認(rèn)值,也可以自己提供值。
>>> {}.fromkeys(['name','age'])
{'age':None,'name':None}
>>>
>>> dict.fromkeys(['name','age'],'unknow')
{'age':'unknow','name':'unknow'}
1.4.4 get
get方法是個(gè)更寬松的訪問(wèn)字典項(xiàng)的方法。當(dāng)使用get訪問(wèn)一個(gè)不存在的鍵時(shí),會(huì)得到None值。還可以自定義“默認(rèn)”值,替換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方法將所有的字典項(xiàng)以列表方式返回,但是列表中的每一項(xiàng)(鍵,值)返回時(shí)并沒(méi)有特殊的順序。iteritems方法的作用大致相同,但是會(huì)返回一個(gè)迭代器對(duì)象而不是列表:
>>> d = {'a':1,'b':2,'c':3}
>>>d.items
[('a',1),('b',2),('c',3)]
>>> it = d.iteritems()
>>> it
<dictionary-iteritems object at 169050>
>>> list(it)
[('a',1),('b',2),('c',3)]
1.4.7 keys和iterkeys
keys方法將字典中的鍵以列表形式返回,而iterkeys則返回針對(duì)鍵的迭代器。
1.4.8 pop方法
pop方法用來(lái)獲得對(duì)應(yīng)給定鍵的值,然后將這個(gè)鍵-值對(duì)從字典中移除。
>>> d = {'a':1,'b':2,'c':3}
>>> d.pop('a')
>>> d
{'b':2,'c':3}
1.4.10 setdefault
setdefault方法在某種程度上類(lèi)似于get方法,就是能夠獲得與給定鍵相關(guān)聯(lián)的值,還能在字典中不含有給定鍵的情況下設(shè)定相應(yīng)的鍵值。
>>> d = {}
>>> d.setdefault('name','N/A')
'N/A'
>>> d
{'name': 'N/A'}
>>> d.setdefault('name',A)
'N/A'
如上例,當(dāng)鍵存在時(shí),返回默認(rèn)值(可選)并且相應(yīng)地更新字典,如果鍵存在,那么返回與其對(duì)應(yīng)的值,但不改變字典。
1.4.11 update
update方法可以利用一個(gè)字典項(xiàng)更新另一個(gè)字典。提供的字典項(xiàng)會(huì)被添加到舊的字典中,若有相同的鍵則會(huì)進(jìn)行覆蓋。
>>> 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返回值的迭代器),與返回鍵的列表不同的是,返回值列表中可以包含重復(fù)的元素。
>>> 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]
鍵可以是數(shù)字,字符串甚至是元組。
1. 創(chuàng)建和使用字典
字典可以通過(guò)下面的方式創(chuàng)建:
復(fù)制代碼 代碼如下:
phonebook = {'Alice':'2341','Beth':'9102','Ceil':'3258'}
字典由多個(gè)鍵及與其對(duì)應(yīng)的值構(gòu)成的對(duì)組成。每個(gè)鍵和它的值之間用冒號(hào)(:)隔開(kāi),項(xiàng)之間用逗號(hào)(,)隔開(kāi),而整個(gè)字典是由一對(duì)大括號(hào)括起來(lái)??兆值洌簕}
1.1 dict函數(shù)
可以用dict函數(shù)通過(guò)映射(比如其他字典)或者(鍵,值)這樣的序列建立字典。
復(fù)制代碼 代碼如下:
>>> 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中項(xiàng)(鍵-值對(duì))的數(shù)量;
(2)d[k]返回關(guān)聯(lián)到k上的值;
(3)d[k]=v將值v關(guān)聯(lián)到鍵k上;
(4)del d[k]刪除鍵為k的項(xiàng);
(5)k in d檢查d中是否有含鍵為k的項(xiàng);
1.3 字典的格式化字符串
字典格式化字符串:在每個(gè)轉(zhuǎn)換說(shuō)明符中的%字符后面,可以加上(用圓括號(hào)括起來(lái)的)鍵,后面再跟上其他說(shuō)明元素。
只要所有給出的鍵都能在字典中找到,就可以獲得任意數(shù)量的轉(zhuǎn)換說(shuō)明符。
復(fù)制代碼 代碼如下:
>>> temple = ‘the price of cake is $%(cake)s,the price of milk of cake is $%(milk)s. $%(cake)s is OK'
>>> price = {'cake':4,'milk':5}
>>>print temple % price
‘the price of cake is $4,the price of milk of cake is $5. $4 is OK'
1.4 字典方法
1.4.1 clear
clear方法清除字典中所有的項(xiàng),這是個(gè)原地操作,無(wú)返回值(或者說(shuō)返回none)。
考慮下面2種情況:
a.將x關(guān)聯(lián)到一個(gè)新的空字典來(lái)清空它,這對(duì)y一點(diǎn)影響都沒(méi)有,y還是關(guān)聯(lián)到原先的字典
復(fù)制代碼 代碼如下:
>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> y
{'key':'value'}
>>> x = {}
>>> y
{'key':'value'}
b.如果想清空原始字典中所有的元素,必須用clear方法。
復(fù)制代碼 代碼如下:
>>> x = {}
>>> y = x
>>> x['key'] = 'value'
>>> y
{'key':'value'}
>>> x.clear()
>>> y
{}
1.4.2 copy
copy方法返回一個(gè)具有相同鍵-值對(duì)的新字典(這個(gè)方法實(shí)現(xiàn)的是淺復(fù)制,因?yàn)橹当旧硎窍嗤?,而不是副本?BR>在副本中替換值時(shí),原始字典不受影響,但是如果修改了某個(gè)值,原始字典會(huì)改變。]
復(fù)制代碼 代碼如下:
>>> 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]}
避免這個(gè)問(wèn)題的方法是使用深度復(fù)制-deepcopy(),復(fù)制其包含所有的值。
復(fù)制代碼 代碼如下:
>>> 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方法使用給定的鍵建立新的字典,每個(gè)鍵默認(rèn)對(duì)應(yīng)的值為None,可以直接在所有字典的類(lèi)型dict上調(diào)用此方法。如果不想使用默認(rèn)值,也可以自己提供值。
復(fù)制代碼 代碼如下:
>>> {}.fromkeys(['name','age'])
{'age':None,'name':None}
>>>
>>> dict.fromkeys(['name','age'],'unknow')
{'age':'unknow','name':'unknow'}
1.4.4 get
get方法是個(gè)更寬松的訪問(wèn)字典項(xiàng)的方法。當(dāng)使用get訪問(wèn)一個(gè)不存在的鍵時(shí),會(huì)得到None值。還可以自定義“默認(rèn)”值,替換None。
復(fù)制代碼 代碼如下:
>>> 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)
復(fù)制代碼 代碼如下:
>>> d = {}
>>> d.has_key('name')
False
1.4.6 items和iteritems
items方法將所有的字典項(xiàng)以列表方式返回,但是列表中的每一項(xiàng)(鍵,值)返回時(shí)并沒(méi)有特殊的順序。iteritems方法的作用大致相同,但是會(huì)返回一個(gè)迭代器對(duì)象而不是列表:
復(fù)制代碼 代碼如下:
>>> d = {'a':1,'b':2,'c':3}
>>>d.items
[('a',1),('b',2),('c',3)]
>>> it = d.iteritems()
>>> it
<dictionary-iteritems object at 169050>
>>> list(it)
[('a',1),('b',2),('c',3)]
1.4.7 keys和iterkeys
keys方法將字典中的鍵以列表形式返回,而iterkeys則返回針對(duì)鍵的迭代器。
1.4.8 pop方法
pop方法用來(lái)獲得對(duì)應(yīng)給定鍵的值,然后將這個(gè)鍵-值對(duì)從字典中移除。
復(fù)制代碼 代碼如下:
>>> d = {'a':1,'b':2,'c':3}
>>> d.pop('a')
>>> d
{'b':2,'c':3}
1.4.10 setdefault
setdefault方法在某種程度上類(lèi)似于get方法,就是能夠獲得與給定鍵相關(guān)聯(lián)的值,還能在字典中不含有給定鍵的情況下設(shè)定相應(yīng)的鍵值。
復(fù)制代碼 代碼如下:
>>> d = {}
>>> d.setdefault('name','N/A')
'N/A'
>>> d
{'name': 'N/A'}
>>> d.setdefault('name',A)
'N/A'
如上例,當(dāng)鍵存在時(shí),返回默認(rèn)值(可選)并且相應(yīng)地更新字典,如果鍵存在,那么返回與其對(duì)應(yīng)的值,但不改變字典。
1.4.11 update
update方法可以利用一個(gè)字典項(xiàng)更新另一個(gè)字典。提供的字典項(xiàng)會(huì)被添加到舊的字典中,若有相同的鍵則會(huì)進(jìn)行覆蓋。
復(fù)制代碼 代碼如下:
>>> 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返回值的迭代器),與返回鍵的列表不同的是,返回值列表中可以包含重復(fù)的元素。
復(fù)制代碼 代碼如下:
>>> 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]
您可能感興趣的文章:
- Python創(chuàng)建字典的八種方式
- Python中字典創(chuàng)建、遍歷、添加等實(shí)用操作技巧合集
- Python創(chuàng)建空列表的字典2種方法詳解
- Python中創(chuàng)建字典的幾種方法總結(jié)(推薦)
- python實(shí)現(xiàn)創(chuàng)建新列表和新字典,并使元素及鍵值對(duì)全部變成小寫(xiě)
- Python之字典對(duì)象的幾種創(chuàng)建方法
- python創(chuàng)建字典(dict)的幾種方法小結(jié)(含代碼示例)
- Python學(xué)習(xí)之字典的創(chuàng)建和使用
- python創(chuàng)建字典的幾種常見(jiàn)方法
相關(guān)文章
PyTorch使用torch.nn.Module模塊自定義模型結(jié)構(gòu)方式
這篇文章主要介紹了PyTorch使用torch.nn.Module模塊自定義模型結(jié)構(gòu)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Python使用matplotlib繪制多個(gè)圖形單獨(dú)顯示的方法示例
這篇文章主要介紹了Python使用matplotlib繪制多個(gè)圖形單獨(dú)顯示的方法,結(jié)合實(shí)例形式分析了matplotlib實(shí)現(xiàn)繪制多個(gè)圖形單獨(dú)顯示的具體操作技巧與注意事項(xiàng),代碼備有較為詳盡的注釋便于理解,需要的朋友可以參考下2018-03-03
python?遠(yuǎn)程執(zhí)行命令的詳細(xì)代碼
有時(shí)會(huì)需要在遠(yuǎn)程的機(jī)器上執(zhí)行一個(gè)命令,并獲得其返回結(jié)果。對(duì)于這種情況,python 可以很容易的實(shí)現(xiàn)。今天通過(guò)實(shí)例代碼介紹下python?遠(yuǎn)程執(zhí)行命令的相關(guān)知識(shí),感興趣的朋友一起看看吧2022-02-02
Python入門(mén)基礎(chǔ)之?dāng)?shù)字字符串與列表
這篇文章主要給大家介紹了關(guān)于Python入門(mén)基礎(chǔ)之?dāng)?shù)字字符串與列表的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Python正則表達(dá)式中的量詞符號(hào)與組問(wèn)題小結(jié)
這篇文章主要介紹了Python正則表達(dá)式中的量詞符號(hào)與組問(wèn)題小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08
Python圖像處理Pillow庫(kù)的基礎(chǔ)使用
Pillow庫(kù)是Python中最流行的圖像處理庫(kù)之一,它是PIL(Python Imaging Library)的一個(gè)分支,提供了豐富的圖像處理功能,使圖像處理變得簡(jiǎn)單而高效,在這篇文章中,我們將探討Pillow庫(kù)的一些基本功能,感興趣的朋友可以參考下2023-09-09
在Python中使用MongoEngine操作數(shù)據(jù)庫(kù)教程實(shí)例
這篇文章主要介紹了在Python中使用MongoEngine操作數(shù)據(jù)庫(kù)教程實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Python中pinyin庫(kù)實(shí)現(xiàn)漢字轉(zhuǎn)換為拼音
python-pinyin是一個(gè)用于漢字轉(zhuǎn)拼音的Python庫(kù),支持多音字、多種拼音風(fēng)格和自定義詞典,本文就來(lái)介紹一下Python中pinyin庫(kù)實(shí)現(xiàn)漢字轉(zhuǎn)換為拼音,感興趣的可以了解一下2025-01-01

