<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Python中的字典由於是物件的集合屬於複合資料型別,類似於列表。
字典是 Python 對資料結構的實現,通常稱為關聯陣列。字典由鍵值對的集合組成。每個鍵值對將鍵對映到其關聯的值。
可以通過將逗號分隔的鍵值對列表括在花括號 ( {} ) 中來定義字典。冒號 ( : ) 將每個鍵與其關聯的值分開。
d = { <key>: <value>, <key>: <value>, . . . <key>: <value> } # 定義一個Team >>> MLB_team = { ... 'Colorado' : 'Rockies', ... 'Boston' : 'Red Sox', ... 'Minnesota': 'Twins', ... 'Milwaukee': 'Brewers', ... 'Seattle' : 'Mariners' ... }
可以使用內建dict()函數構建字典。
d = dict([ (<key>, <value>), (<key>, <value), . . . (<key>, <value>) ]) # 定義一個Team >>> MLB_team = dict([ ... ('Colorado', 'Rockies'), ... ('Boston', 'Red Sox'), ... ('Minnesota', 'Twins'), ... ('Milwaukee', 'Brewers'), ... ('Seattle', 'Mariners') ... ]) # 另一種定義方式 >>> MLB_team = dict( ... Colorado='Rockies', ... Boston='Red Sox', ... Minnesota='Twins', ... Milwaukee='Brewers', ... Seattle='Mariners' ... )
字典內容的顯示。
>>> type(MLB_team) <class 'dict'> >>> MLB_team {'Colorado': 'Rockies', 'Boston': 'Red Sox', 'Minnesota': 'Twins', 'Milwaukee': 'Brewers', 'Seattle': 'Mariners'}
字典中的條目按定義的順序顯示,使用索引無法指定存取元素。
>>> MLB_team[1] Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> MLB_team[1] KeyError: 1
通過在方括號[]中指定對應的鍵,從字典中檢索值。
>>> MLB_team['Minnesota'] 'Twins' >>> MLB_team['Colorado'] 'Rockies'
檢索值不在字典中則丟擲異常。
>>> MLB_team['Toronto'] Traceback (most recent call last): File "<pyshell#19>", line 1, in <module> MLB_team['Toronto'] KeyError: 'Toronto'
現有字典新增資料只需分配新的鍵和值。
>>> MLB_team['Kansas City'] = 'Royals' >>> MLB_team {'Colorado': 'Rockies', 'Boston': 'Red Sox', 'Minnesota': 'Twins', 'Milwaukee': 'Brewers', 'Seattle': 'Mariners', 'Kansas City': 'Royals'}
更新資料,只需為現有鍵分配一個新值。
>>> MLB_team['Seattle'] = 'Seahawks' >>> MLB_team {'Colorado': 'Rockies', 'Boston': 'Red Sox', 'Minnesota': 'Twins', 'Milwaukee': 'Brewers', 'Seattle': 'Seahawks', 'Kansas City': 'Royals'}
刪除資料,使用 del 指定要刪除的鍵。
>>> del MLB_team['Seattle'] >>> MLB_team {'Colorado': 'Rockies', 'Boston': 'Red Sox', 'Minnesota': 'Twins', 'Milwaukee': 'Brewers', 'Kansas City': 'Royals'}
經常遇見的一些錯誤做法。
>>> MLB_team['Toronto'] Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> MLB_team['Toronto'] KeyError: 'Toronto' >>> MLB_team[1] Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> MLB_team[1] KeyError: 1 # 數位作為鍵值使用 >>> d = {0: 'a', 1: 'b', 2: 'c', 3: 'd'} >>> d {0: 'a', 1: 'b', 2: 'c', 3: 'd'} >>> d[0] 'a' >>> d[2] 'c'
不能將字典視為列表。
>>> type(d) <class 'dict'> >>> d[-1] Traceback (most recent call last): File "<pyshell#30>", line 1, in <module> d[-1] KeyError: -1 >>> d[0:2] Traceback (most recent call last): File "<pyshell#31>", line 1, in <module> d[0:2] TypeError: unhashable type: 'slice' >>> d.append('e') Traceback (most recent call last): File "<pyshell#32>", line 1, in <module> d.append('e') AttributeError: 'dict' object has no attribute 'append'
建立新的空字典,然後通過一次新增一個新的鍵和值構建。
>>> person = {} >>> type(person) <class 'dict'> >>> person['fname'] = 'Joe' >>> person['lname'] = 'Fonebone' >>> person['age'] = 51 >>> person['spouse'] = 'Edna' >>> person['children'] = ['Ralph', 'Betty', 'Joey'] >>> person['pets'] = {'dog': 'Fido', 'cat': 'Sox'} # 建立和存取字典 >>> person {'fname': 'Joe', 'lname': 'Fonebone', 'age': 51, 'spouse': 'Edna', 'children': ['Ralph', 'Betty', 'Joey'], 'pets': {'dog': 'Fido', 'cat': 'Sox'}} >>> person['fname'] 'Joe' >>> person['age'] 51 >>> person['children'] ['Ralph', 'Betty', 'Joey'] # 檢索字典資料 >>> person['children'][-1] 'Joey' >>> person['pets']['cat'] 'Sox'
構建的字典中資料型別沒有明確的限制。
>>> foo = {42: 'aaa', 2.78: 'bbb', True: 'ccc'} >>> foo {42: 'aaa', 2.78: 'bbb', True: 'ccc'} >>> foo[42] 'aaa' >>> foo[2.78] 'bbb' >>> foo[True] 'ccc'
幾乎任何型別的值都可以用作 Python 中的字典鍵。
>>> foo = {42: 'aaa', 2.78: 'bbb', True: 'ccc'} >>> foo {42: 'aaa', 2.78: 'bbb', True: 'ccc'} # 可以使用型別和函數等內建物件 >>> d = {int: 1, float: 2, bool: 3} >>> d {<class 'int'>: 1, <class 'float'>: 2, <class 'bool'>: 3} >>> d[float] 2 >>> d = {bin: 1, hex: 2, oct: 3} >>> d[oct] 3
同一字典內重複的鍵無法新增,如果新增則對原鍵的值進行替換。
>>> MLB_team = { ... 'Colorado' : 'Rockies', ... 'Boston' : 'Red Sox', ... 'Minnesota': 'Twins', ... 'Milwaukee': 'Brewers', ... 'Seattle' : 'Mariners' ... } >>> MLB_team['Minnesota'] = 'Timberwolves' >>> MLB_team {'Colorado': 'Rockies', 'Boston': 'Red Sox', 'Minnesota': 'Timberwolves', 'Milwaukee': 'Brewers', 'Seattle': 'Mariners'}
元組也可以是字典鍵,因為元組是不可變的。
>>> d = {(1, 1): 'a', (1, 2): 'b', (2, 1): 'c', (2, 2): 'd'} >>> d[(1,1)] 'a' >>> d[(2,1)] 'c'
字典的中的值是沒有任何限制的。
>>> d = {0: 'a', 1: 'a', 2: 'a', 3: 'a'} >>> d {0: 'a', 1: 'a', 2: 'a', 3: 'a'} >>> d[0] == d[1] == d[2] True
in and not in運運算元返回True or False。
>>> MLB_team = { ... 'Colorado' : 'Rockies', ... 'Boston' : 'Red Sox', ... 'Minnesota': 'Twins', ... 'Milwaukee': 'Brewers', ... 'Seattle' : 'Mariners' ... } >>> 'Milwaukee' in MLB_team True >>> 'Toronto' in MLB_team False >>> 'Toronto' not in MLB_team True
也可以與短路評估一起使用。
>>> MLB_team['Toronto'] Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> MLB_team['Toronto'] KeyError: 'Toronto' >>> 'Toronto' in MLB_team and MLB_team['Toronto'] False
與字串和列表一樣字典上也是有呼叫內建方法。
# d.clear() 清空字典資料 >>> d = {'a': 10, 'b': 20, 'c': 30} >>> d {'a': 10, 'b': 20, 'c': 30} >>> d.clear() >>> d {} # d.get(<key>[, <default>]) 如果字典中存在鍵,則返回該鍵的值 >>> d = {'a': 10, 'b': 20, 'c': 30} >>> print(d.get('b')) 20 >>> print(d.get('z')) None # <key>未找到並且<default>指定了可選引數 >>> print(d.get('z', -1)) -1 # d.items() 返回字典中的鍵值對列表 >>> d = {'a': 10, 'b': 20, 'c': 30} >>> d {'a': 10, 'b': 20, 'c': 30} >>> list(d.items()) [('a', 10), ('b', 20), ('c', 30)] >>> list(d.items())[1][0] 'b' >>> list(d.items())[1][1] 20 # d.keys() 返回字典中的鍵列表 >>> d = {'a': 10, 'b': 20, 'c': 30} >>> d {'a': 10, 'b': 20, 'c': 30} >>> list(d.keys()) ['a', 'b', 'c'] # d.values() 返回字典中的值列表 >>> d = {'a': 10, 'b': 20, 'c': 30} >>> d {'a': 10, 'b': 20, 'c': 30} >>> list(d.values()) [10, 20, 30] # d.pop(<key>[, <default>]) 從字典中刪除一個鍵,如果存在並返回它的值 >>> d = {'a': 10, 'b': 20, 'c': 30} >>> d.pop('b') 20 >>> d {'a': 10, 'c': 30} # 如果不存在則引發異常 >>> d = {'a': 10, 'b': 20, 'c': 30} >>> d.pop('z') Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> d.pop('z') KeyError: 'z' # 如果指定預設引數<default>則返回該值 >>> d = {'a': 10, 'b': 20, 'c': 30} >>> d.pop('z', -1) -1 >>> d {'a': 10, 'b': 20, 'c': 30} # d.popitem() 從字典中刪除鍵值對 >>> d = {'a': 10, 'b': 20, 'c': 30} >>> d.popitem() ('c', 30) >>> d {'a': 10, 'b': 20} >>> d.popitem() ('b', 20) >>> d {'a': 10} # d為空會引發異常 >>> d = {} >>> d.popitem() Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> d.popitem() KeyError: 'popitem(): dictionary is empty' # d.update(<obj>) 將字典與另一個字典或可迭代的鍵值對合並 # (被替換鍵值).update(替換鍵值) >>> d1 = {'a': 10, 'b': 20, 'c': 30} >>> d2 = {'b': 200, 'd': 400} >>> d1.update(d2) >>> d1 {'a': 10, 'b': 200, 'c': 30, 'd': 400} # 使用元組更新 >>> d1 = {'a': 10, 'b': 20, 'c': 30} >>> d1.update([('b', 200), ('d', 400)]) >>> d1 {'a': 10, 'b': 200, 'c': 30, 'd': 400} # 指定關鍵字引數 >>> d1 = {'a': 10, 'b': 20, 'c': 30} >>> d1.update(b=200, d=400) >>> d1 {'a': 10, 'b': 200, 'c': 30, 'd': 400}
到此這篇關於Python必備技巧之字典(Dictionary)詳解的文章就介紹到這了,更多相關Python 字典內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45