Python字典簡介以及用法詳解
#!/usr/bin/env python # -*- coding:utf-8 -*- """
老規(guī)矩以下方法環(huán)境2.7.x,請3.x以上版本的朋友記得格式print(輸出內(nèi)容放入括號(hào)內(nèi))
字典的基本組成以及用法
dict = { key : value }
dict[ key ] = value
首先來說說字典是由key鍵與value值一一對應(yīng)來組成字典的基本結(jié)構(gòu)
key鍵不能由list列表,dict字典等多元素命名,
key是唯一屬性又可以稱一對一服務(wù),key相同但只會(huì)輸出一個(gè)
value值可以由一個(gè)或多元素命名,不是唯一屬性又可以稱一對多服務(wù)
很重要的一點(diǎn)就是字典是無序的
下面來看看字典的寫法用法:
"""
#dic ={} 初始化一個(gè)字典
dic_samekey = {"a":None,"a":None,"b":None,"b":None} #key相同的情況
print dic_samekey
dic_morevalue = {"a":["0","1","2"],"b":{"c":0,"d":1,"e":2},"t":(0,1,2)} #value一對多的特性
print dic_morevalue
#這時(shí)候看到多value很頭疼了吧怎么取也來學(xué)習(xí)下,
#其實(shí)我命名的的value值已經(jīng)標(biāo)記好下標(biāo)也是默認(rèn)排序,字典無序的再次提醒
#dict[ key ] = value 這樣可以命名一個(gè)字典同樣可以取一個(gè)想要的值
print dic_morevalue["a"][0],dic_morevalue["a"][1],dic_morevalue["a"][2]
print dic_morevalue["b"]["c"],dic_morevalue["b"]["d"],dic_morevalue["b"]["e"]#多字典用法可以構(gòu)造多級(jí)選擇
print dic_morevalue["t"][0],dic_morevalue["t"][1],dic_morevalue["t"][2]
#快速獲取字典所有的key方法及類型
print dic_morevalue.keys(),type(dic_morevalue.keys()) #返回的類型是list列表
#快速獲取字典所有的value方法及類型
print dic_morevalue.values(),type(dic_morevalue.values()) #也是list列表
#copy顧名思義拷貝(淺拷貝)俗稱賦值
dic_test = dic_morevalue.copy()
dic = dic_test
print dic_test
#clear同意思清除,在這樣清空字典內(nèi)的所有元素
print dic_morevalue.clear()
#has_key用來判斷字典內(nèi)有無這個(gè)key鍵,返回布爾類型也就是真假有為True反之為False
print dic_test.has_key("b")
#get也可以用這個(gè)方法來判斷字典內(nèi)有無此key鍵,在沒有key時(shí)會(huì)返回它默認(rèn)值None
print dic_test.get("k")
#pop用來移除字典的某個(gè)key及其value
b = dic_test.pop("b")
print dic_test,u"移除了b:",b
#item()方法把字典中每對key和value組成一個(gè)元組,并把這些元組放在列表中返回。
item = dic_test.items()
print item
#update可以把兩個(gè)字典合并到其中用update的字典內(nèi)
dic2 = {"j":"nice"}
dic_test.update(dic2)
print dic_test
#fromkeys從keys鍵隊(duì)列中統(tǒng)一命名value值,如果沒有設(shè)置就是None
seq = ["name","age","job"]
print dic_test.fromkeys(seq)
print dic_test.fromkeys(seq,"guess") #統(tǒng)一命名為guess

下面我們來具體看下字典的用法:
一、創(chuàng)建字典
字典由鍵和對應(yīng)值成對組成。字典也被稱作關(guān)聯(lián)數(shù)組或哈希表?;菊Z法如下:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
也可如此創(chuàng)建字典:
dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };
注意:
每個(gè)鍵與值用冒號(hào)隔開(:),每對用逗號(hào),每對用逗號(hào)分割,整體放在花括號(hào)中({})。
鍵必須獨(dú)一無二,但值則不必。
值可以取任何數(shù)據(jù)類型,但必須是不可變的,如字符串,數(shù)或元組。
二、訪問字典里的值
把相應(yīng)的鍵放入熟悉的方括弧,如下實(shí)例:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];
#以上實(shí)例輸出結(jié)果:
#dict['Name']: Zara
#dict['Age']: 7
如果用字典里沒有的鍵訪問數(shù)據(jù),會(huì)輸出錯(cuò)誤如下:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Alice']: ", dict['Alice'];
#以上實(shí)例輸出結(jié)果:
#dict['Zara']:
#Traceback (most recent call last):
# File "test.py", line 4, in <module>
# print "dict['Alice']: ", dict['Alice'];
#KeyError: 'Alice'[/code]
三、修改字典
向字典添加新內(nèi)容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對如下實(shí)例:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];
#以上實(shí)例輸出結(jié)果:
#dict['Age']: 8
#dict['School']: DPS School
四、刪除字典元素
能刪單一的元素也能清空字典,清空只需一項(xiàng)操作。
顯示刪除一個(gè)字典用del命令,如下實(shí)例:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
del dict['Name']; # 刪除鍵是'Name'的條目
dict.clear(); # 清空詞典所有條目
del dict ; # 刪除詞典
print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];
#但這會(huì)引發(fā)一個(gè)異常,因?yàn)橛胐el后字典不再存在:
dict['Age']:
#Traceback (most recent call last):
# File "test.py", line 8, in <module>
# print "dict['Age']: ", dict['Age'];
#TypeError: 'type' object is unsubscriptable
五、字典鍵的特性
字典值可以沒有限制地取任何python對象,既可以是標(biāo)準(zhǔn)的對象,也可以是用戶定義的,但鍵不行。
兩個(gè)重要的點(diǎn)需要記?。?br />
1)不允許同一個(gè)鍵出現(xiàn)兩次。創(chuàng)建時(shí)如果同一個(gè)鍵被賦值兩次,后一個(gè)值會(huì)被記住,如下實(shí)例:
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};
print "dict['Name']: ", dict['Name'];
#以上實(shí)例輸出結(jié)果:
#dict['Name']: Manni
2)鍵必須不可變,所以可以用數(shù),字符串或元組充當(dāng),所以用列表就不行,如下實(shí)例:
#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7};
print "dict['Name']: ", dict['Name'];
#以上實(shí)例輸出結(jié)果:
#Traceback (most recent call last):
# File "test.py", line 3, in <module>
# dict = {['Name']: 'Zara', 'Age': 7};
#TypeError: list objects are unhashable
六、字典內(nèi)置函數(shù)&方法
Python字典包含了以下內(nèi)置函數(shù):
1、cmp(dict1, dict2):比較兩個(gè)字典元素。
2、len(dict):計(jì)算字典元素個(gè)數(shù),即鍵的總數(shù)。
3、str(dict):輸出字典可打印的字符串表示。
4、type(variable):返回輸入的變量類型,如果變量是字典就返回字典類型。
Python字典包含了以下內(nèi)置方法:
1、radiansdict.clear():刪除字典內(nèi)所有元素
2、radiansdict.copy():返回一個(gè)字典的淺復(fù)制
3、radiansdict.fromkeys():創(chuàng)建一個(gè)新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應(yīng)的初始值
4、radiansdict.get(key, default=None):返回指定鍵的值,如果值不在字典中返回default值
5、radiansdict.has_key(key):如果鍵在字典dict里返回true,否則返回false
6、radiansdict.items():以列表返回可遍歷的(鍵, 值) 元組數(shù)組
7、radiansdict.keys():以列表返回一個(gè)字典所有的鍵
8、radiansdict.setdefault(key, default=None):和get()類似, 但如果鍵不已經(jīng)存在于字典中,將會(huì)添加鍵并將值設(shè)為default
9、radiansdict.update(dict2):把字典dict2的鍵/值對更新到dict里
10、radiansdict.values():以列表返回字典中的所有值
相關(guān)文章
python批量合成bilibili的m4s緩存文件為MP4格式 ver2.5
這篇文章主要介紹了python批量合成bilibili的m4s緩存文件為MP4格式 ver2.5的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
用python實(shí)現(xiàn)一個(gè)文件搜索工具
大家好,本篇文章主要講的是用python實(shí)現(xiàn)一個(gè)搜索工具,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01
Python PyAutoGUI實(shí)現(xiàn)自動(dòng)化任務(wù)應(yīng)用場景示例
這篇文章主要為大家介紹了Python PyAutoGUI實(shí)現(xiàn)自動(dòng)化任務(wù)應(yīng)用場景示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
python高階函數(shù)functools模塊的具體使用
本文主要介紹了python高階函數(shù)functools模塊的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
pytest用例間參數(shù)傳遞的兩種實(shí)現(xiàn)方式示例
pytest提供了許多運(yùn)行命令以供定制化運(yùn)行某一類測試用例或者某個(gè)測試用例等,下面這篇文章主要給大家介紹了關(guān)于pytest用例間參數(shù)傳遞的兩種實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12
Python跨文件實(shí)現(xiàn)字符串填充的三種實(shí)現(xiàn)方法
本文主要介紹了Python跨文件實(shí)現(xiàn)字符串填充的三種實(shí)現(xiàn)方法,包括format方法、%格式化操作符和eval函數(shù)結(jié)合f-string,具有一定的參考價(jià)值,感興趣的可以了解一下2024-12-12
Python?實(shí)現(xiàn)循環(huán)最快方式(for、while?等速度對比)
這篇文章主要介紹了Python?利用for、while?實(shí)現(xiàn)循環(huán)最快方式,文章主要對for、while?等速度對比詳細(xì)介紹,具有一定的參考價(jià)值?,需要的小伙伴可以參考一下2022-01-01

