python字典

一推掸、 字典

1 映射類型數(shù)據(jù)結構介紹

在字典存放的每個元素都是以一對兒鍵值對也物。

在 Python 中 字典通常被稱為 dict,鍵 稱為 key锤灿,值稱為 value

字典中不可以存在相同的 key赘艳,但是 value 可以酌毡。

2 高效創(chuàng)建字典

空字典

In[7]:d1={}In[8]:type(d1)Out[8]:dict

3.dict()轉換為字典

接收一個序列類型的參數(shù),這個序列類型中的每個元素必須是成對兒出現(xiàn)的蕾管。

In[14]:d_tpl=[('a','1'),('b','2'),('c','3')]In[15]:dict3=dict(d_tpl)In[17]:d_tpl2=['a1','b2','c3']In[18]:dict4=dict(d_tpl2)In[21]:dict3isdict4? Out[21]:FalseIn[22]:dict3==dict4? Out[22]:True

4. 哪些數(shù)據(jù)可以作為字典的 kye

key 通常是 字符串

它可以是 Python 中任意不可變類型

比如:

布爾型? True? ? ? 1? ? False? ? ? 0

整型? ? 100? ? ? ? ? ? 200

浮點型? ? 1.0? ? ? ? ? 3.415

元組? ? (1,)? (1, 2, 3)

字符串? 'host_name'

關于字典的key

在 Python 內部用一個哈希表來維護字典中的 key 到 value 的映射關系枷踏。

所以 key 必須是可哈希的。

判斷一個對象是否可哈希掰曾,可以使用hash()函數(shù)

返回一個整數(shù)旭蠕,就是可哈希,反之會拋出 TypeError 異常

hash(1)hash('name')hash((1,2,3))# 列表是可變的數(shù)據(jù)類型旷坦,所有不可以被 hash掏熬,當然也就不能作為 字典的 keyhash([1,2,3])

5. 獲取 key 對應的 value

dict_obj={'a':1,'b':2}dict_obj['a']# key 必須存在,不存在秒梅,拋出異常? ? dict_obj.get('a')# 獲取到 'a' 對應的值(value)dict_obj.get('c')# key 不存在字典中旗芬,則返回 Nonedict_obj.get('c','5')# key 不存在,返回指定的 value

6. 獲取字典所有的 key

dict_obj.keys()

info_dict={"name":'yangge','age':18}d_keys=info_dict.keys()print(d_keys)print(list(d_keys))

循環(huán)字典所有 的key

for key in? d_keys:? ? print(key)

7. 獲取字典所有的 value

dict_obj.values()

info_dict={"name":'yangge','age':18}d_vals=info_dict.values()print(d_vals)print(list(d_vals))

循環(huán)字典所有 的value

forvalind_vals:print(val)

8. 同時獲取字典的 key 和 value

dict_obj.items()

info_dict={"name":'yangge','age':18}item=info_dict.items()print(item)print(list(item))

循環(huán)字典的 key 和 value

for? k, v in? info_dict.items():? ? print(k,? v)

9. 使用=修改或更新字典

可以使用 等號 對字典的key進行直接賦值操作捆蜀。

假如key不存在與字典中疮丛,這個key和 對應值也會被創(chuàng)建到字典中。

In[50]:d5={}In[51]:d5['a']=1In[52]:d5['b']=2In[53]:d5Out[53]:{'a':1,'b':2}In[54]:d5['li']=[1,3,5]In[55]:d5Out[55]:{'a':1,'b':2,'li':[1,3,5]}

10. 使用update()更新字典

把一個已經(jīng)存在的字典中的鍵值對辆它,添加到另一個字典中誊薄。

In[59]:d5Out[59]:{'a':1,'b':2,'li':[1,3,5]}In[60]:d6={'a':2,'d':2,'e':5}In[61]:d5.update(d6)In[62]:d5Out[62]:{'a':2,'b':2,'d':2,'e':5,'li':[1,3,5]}

注意: 更新時,相同的key锰茉,它的值會被新的值替代呢蔫,這個特性同樣適用與=號方式的更新.

python3.5+

x = {'a': 1, 'b': 2}y = {'c': 1, 'd': 2}z = {**x,**y}print(z)

11. 成員判斷

in

In[63]:'a'in d5# 默認就是判斷 'a' 是否存在于字典中的 keys()Out[63]:TrueIn[63]:'a'in d5.keys()Out[63]:TrueIn[75]:'a'not in d5.keys()Out[75]:False

12. 刪除和清空字典

刪除指定的鍵值對

dict_obj={'a':1}deldict_obj['a']# 從字典中刪除指定 key 的鍵值對deldict_obj# 刪除字典本身,字典自身就不存在于內存中了

清空

dict_obj={}dict_obj.clear()# 字典本身還在內存中飒筑,只是內容沒了

pop()

從字典中刪除指定 key 的鍵值對咐刨,并返回這個 key 對應的值

In[49]:d6={'b':2,'c':'3','d':'new key','li':[1,3,5]}In[50]:li=d6.pop('li')In[51]:print(li)Out[51]:[1,3,5]

13. 用字典實現(xiàn) switch … case 語句

Python 中沒有 switch … case 語句昙衅,這個問題Python之父龜叔表示這個語法過去沒有,現(xiàn)在沒有定鸟,以后也不會有。因為Python簡潔的語法完全可以用 if … elif 實現(xiàn)著瓶。如果有太多的分支判斷联予,還可以使用字典來代替。

arg=input(">>:")ifarg=="0":print('zero')elifarg=="1":print('one')elifarg=="2":print("two")else:print("nothing")

建議使用下面的代碼實現(xiàn)

arg=input(">>:")data={"0":"zero","1":"one","2":"two",}data.get(arg,"nothing")

二材原、集合

1 集合特性介紹

在 python 中集合看起來像是只有 key 的字典{'disk','cpu','memory','motherboard'}在 python 解釋器中表現(xiàn)為set集合內的元素不允許重復

2 高效創(chuàng)建集合和轉換

set()

In[96]:s1=set()In[97]:s1Out[97]:set()

轉換

In[99]:set('disk')Out[99]:{'d','i','k','s'}In[100]:set(['disk','cpu','memory'])Out[100]:{'cpu','disk','memory'}In[101]:set(('disk','cpu','memory'))Out[101]:{'cpu','disk','memory'}In[102]:set({'disk':'560G','cpu':'4'})Out[102]:{'cpu','disk'}

3 集合運算

a.&交集

獲取兩個集合都有的元素

In[55]:s1={"192.168.1.51","192.168.1.45"}In[56]:s2={"192.168.1.51","192.168.1.78",}In[57]:s1&s2Out[57]:{'192.168.1.51'}

b.|并集

把兩個集合的元素合并在一起沸久,產(chǎn)生一個新的集合

In[60]:s1|s2Out[60]:{'192.168.1.45','192.168.1.51','192.168.1.78'}

c.-差集

返回第一個集合中獨有的元素。

就是只保留在第一個集合中出現(xiàn)并且不在第二個集合中出現(xiàn)的元素余蟹。

In[55]:s1={"192.168.1.51","192.168.1.45"}In[56]:s2={"192.168.1.55","192.168.1.51"}In[61]:s1-s2Out[61]:{'192.168.1.45'}In[62]:s2-s1Out[62]:{'192.168.1.78'}

^異或運算

獲取兩個集合的分別獨有的元素卷胯,組合為一個新的集合對象。

In[55]:s1={"192.168.1.51","192.168.1.45"}In[56]:s2={"192.168.1.55","192.168.1.51"}In[63]:s1^s2Out[63]:{'192.168.1.45','192.168.1.78'}

大型數(shù)據(jù)結構應用場景

host_info=[]host_info.append({'192.168.1.11':{'cpu':['Intel(R) Core(TM) i5-5350U CPU @ 1.80GHz',4,1],'memory':['16','4','2'],'disk':['1T','2T']}})host_info.append({'192.168.1.12':{'cpu':['Intel(R) Core(TM) i5-5350U CPU @ 1.80GHz',4,1],'memory':['16','4','2'],'disk':['1T','2T']}})

取到"1T"

print(host_info[0])print(host_info[0].get('192.168.1.11').get('disk')[0])

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末威酒,一起剝皮案震驚了整個濱河市窑睁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌葵孤,老刑警劉巖担钮,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尤仍,居然都是意外死亡箫津,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門宰啦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苏遥,“玉大人,你說我怎么就攤上這事赡模√锾浚” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵纺裁,是天一觀的道長诫肠。 經(jīng)常有香客問我,道長欺缘,這世上最難降的妖魔是什么栋豫? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮谚殊,結果婚禮上丧鸯,老公的妹妹穿的比我還像新娘。我一直安慰自己嫩絮,他們只是感情好丛肢,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布围肥。 她就那樣靜靜地躺著,像睡著了一般蜂怎。 火紅的嫁衣襯著肌膚如雪穆刻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天杠步,我揣著相機與錄音氢伟,去河邊找鬼。 笑死幽歼,一個胖子當著我的面吹牛朵锣,可吹牛的內容都是我干的。 我是一名探鬼主播甸私,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诚些,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了皇型?” 一聲冷哼從身側響起诬烹,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎犀被,沒想到半個月后椅您,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡寡键,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年掀泳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片西轩。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡员舵,死狀恐怖,靈堂內的尸體忽然破棺而出藕畔,到底是詐尸還是另有隱情马僻,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布注服,位于F島的核電站韭邓,受9級特大地震影響,放射性物質發(fā)生泄漏溶弟。R本人自食惡果不足惜女淑,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辜御。 院中可真熱鬧鸭你,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至愉老,卻和暖如春场绿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背俺夕。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工裳凸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人劝贸。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像逗宁,于是被迫代替她去往敵國和親映九。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354