python字典是一種數據結構,類似於其他編程語言中的關聯數組。數組或列表按位置索引元素。另一方面,字典通過可以是字符串的鍵來索引元素。可以將字典視為無序的鍵值對集。
在本文中,我們將向您介紹如何使用python字典。
有幾種方法可以創建python字典。最簡單的方法是使用大括號初始化,語法類似於JSON。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}你也可以用數字作為鑰匙。但是,要小心使用浮點數作為鍵,因為計算機將它們存儲為近似值。
rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}print rain_percentprint rain_percent[1980]# prints{1980: '17%', 1981: '15%', 1982: '10%'}17%還可以使用名稱-值對作為dict()構造函數的關鍵字參數來創建和初始化字典。
population = dict(California=37253956, Colorado=5029196, Connecticut=3574097, Delaware=897934)print population# prints{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}創建字典的另一種方法是使用鍵值元組數組。這裡是與上面相同的例子。
pairs = [('California', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)]population = dict(pairs)print population# prints{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}Dict comprehension提供了一種很酷的語法來初始化Dict,如果您可以基於鍵計算值的話。下面初始化一系列數字的dict和平方值。
print {x: x**2 for x in xrange(10, 20)}# prints{10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361}它是如何工作的?後一部分(對於xrange(10,20)中的x)返回指定範圍內的數字範圍。dict理解部分({x:x**2..})在這個範圍內循環並初始化字典。
一旦你創建了字典,你能用它做什麼?你可以訪問元素,更新值,刪除元素等等。
使用括號中的鍵訪問dict的元素,就像訪問數組或列表一樣。
print population['Delaware']# prints897934如果鍵是數字,則不需要引號。然後,表達式看起來像一個列表或數組索引。
print rain_percent[1980]# prints17%訪問密鑰時密鑰的類型必須與Python字典中存儲的內容匹配。由於存儲的密鑰是數字,而訪問密鑰是字符串,因此以下情況會導致錯誤。
x = '1980'print rain_percent[x]# results in 1 x = '1980'----> 2 print rain_percent[x]KeyError: '1980'訪問不存在的密鑰是一個錯誤。
rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}print rain_percent[1983]# prints 1 rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}----> 2 print rain_percent[1983]KeyError: 1983要訪問鍵並在映射不存在時提供默認值,請使用get()方法,並將默認值用作第二個參數。
print rain_percent.get(1985, '0%')# prints0%如果您想檢查一個密鑰的存在而不實際嘗試訪問它(並且可能遇到如上所述的密鑰錯誤),該怎麼辦?您可以在返回布爾值的dct格式key中使用in關鍵字。
print 1980 in rain_percentprint '1980' in rain_percent# printsTrueFalse使用格式key not in dct反轉條件(即確保該鍵不在Python字典中)。這相當於標準的python否定,而不是dct中的key。
print 1980 not in rain_percentprint 1985 not in rain_percent# printsFalseTrue通過指定給所需的鍵來更改值。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}users['age'] = 29print users# prints{'lastname': 'Smith', 'age': 29, 'firstname': 'John'}使用相同的語法向Python字典添加新映射。
users['dob'] = '15-sep-1971'print users# prints{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}使用Update()方法一次性更新字典的多個元素。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}users.update({'age': 29, 'dob': '15-sep-1971'})print users# prints{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}使用setdefault()為鍵設置默認值。如果映射不存在,則此方法設置鍵的值。它返回當前值。
# does not change current valueprint users.setdefault('firstname', 'Jane')# printsJohn# sets valueprint users.setdefault('city', 'NY')# printsNY# Final valueprint users# prints{'lastname': 'Smith', 'age': 27, 'firstname': 'John', 'city': 'NY'}使用del運算符刪除字典中的映射。此運算符不返回任何內容。
如果字典中不存在密鑰,則會遇到密鑰錯誤。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}del users['age']print users# prints{'lastname': 'Smith', 'firstname': 'John'}當您希望返回已刪除的值時,請改用pop()方法。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}print users.pop('age')print users# prints27{'lastname': 'Smith', 'firstname': 'John'}如果你想刪除一個鍵,如果它存在,而不造成錯誤,如果它沒有呢?可以使用pop()併為第二個參數指定None,如下所示:
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}users.pop('foo', None)print users# prints{'lastname': 'Smith', 'age': 27, 'firstname': 'John'}這裡有一個從字典中刪除一串鍵的單行程序,不會對不存在的鍵造成錯誤。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27, 'dob': '15-sep-1971'}map(lambda x : users.pop(x, None),['age', 'foo', 'dob'])print users要從字典中刪除所有鍵嗎?使用clear()方法。
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}users.clear()print users# prints{}Python提供了許多方法來循環字典的條目。挑一個適合你的需要。
以下方法描述以數組形式提取各種Python字典信息。生成的數組可以使用普通的python構造進行循環。但是,請記住,根據字典的大小,返回的數組可能很大。因此,處理這些數組可能比使用上面的迭代器方法更昂貴(內存方面)。
使用這些數組是可以接受的一種情況是,當遇到不需要的元素時,需要從字典中刪除項。修改字典時使用迭代器可能會導致運行時錯誤。
在本文中,我們嘗試介紹python字典最常見的用例。請務必查看我們的所有其他Python文章,以獲得更多Python技巧。如果您有其他用例,您覺得應該包括在內,請在下面的評論中告訴我們!
圖片來源:viper345/Shutterstock
關鍵區別——php與python PHP和Python是兩種流行的程式語言。PHP和Python的關鍵區別在於PHP專門用於web開發,而Python則用於web開發並作為一種通用程式語言。 PHP是一種為web開發而設計的伺服器端指令碼語言。Python是一種用於通用程...
關鍵區別–perl與python 計算機程式為計算機執行任務提供指令。一組指令被稱為計算機程式。計算機程式是用程式語言開發的。高階語言程式設計師可以理解,但計算機卻不能理解。因此,這些程式被轉換成機器可理解的格式...
關鍵區別——ruby與python Ruby和Python是高階程式語言,因為它們遵循與英語語言相似的語法。因此,程式設計師很容易理解這些語言。Ruby和Python都是解釋語言。兩種語言都有大量的社群支援。Ruby和Python的一個主要優點是這些語...
您想提高Python技能嗎?然後,您可以嘗試使用Python在計算機上執行一些任務。使用Python將檔案從一個目錄複製和貼上到另一個目錄是一種有趣的方法。 ...
在Python中及時使用列表理解可以使迭代列表操作變得容易。除了一行之外,它的可讀性更高,執行效率也更高。 ...
Python風靡了編碼界。隨著這門新語言的興起,DIY電子領域也蓬勃發展。來自Arduino和Raspberry Pi等公司的開發板和單板計算機改變了人們生產家用電子產品的方式。如果你能用Python程式設計一個Arduino,那不是很棒嗎? ...
... 這對使用者和開發者來說都是好事。人們不必擔心如何找到程式的替代品,這一事實有助於降低在作業系統之間切換的障礙。除此之外,它還為編寫軟體的人員提供了更高的使用者覆蓋率,而且只需付出最小的努力。 ...
...言相比:JavaScript有1604k的pull請求,Java有763k的pull請求,Python有744個pull請求。Ruby、PHP、C++和CSS也擊敗了C. ...
如果您正在考慮學習Python,那麼您可能會被初始設定過程弄得不知所措。您需要在系統上安裝Python,然後學習如何使用命令列處理程式碼,或者學習如何使用互動式shell,或者學習如何設定pythonide。 ...
如果你今天要學習一門新語言,Python就是其中一種選擇。它不僅相對容易學習,而且有許多實際用途,可以在不同的技術相關職業中派上用場。 ...