python字典:如何使用它編寫更好的程式碼

可以將Python字典視為無序的鍵值對集。在本文中,我們將介紹如何使用它們並使用它們改進Python程式碼。...

python字典是一種數據結構,類似於其他編程語言中的關聯數組。數組或列表按位置索引元素。另一方面,字典通過可以是字符串的鍵來索引元素。可以將字典視為無序的鍵值對集。

python-dictionary

a python dictionary key-value pairs

在本文中,我們將向您介紹如何使用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..})在這個範圍內循環並初始化字典。

使用python詞典

一旦你創建了字典,你能用它做什麼?你可以訪問元素,更新值,刪除元素等等。

訪問python字典元素

使用括號中的鍵訪問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提供了許多方法來循環字典的條目。挑一個適合你的需要。

循環鍵

  • The simplest method for processing keys (and possibly values) in sequence uses a loop of the form: users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}for k in users: print k, '=>', users[k]# printslastname => Smithage => 27firstname => John
  • Using the method iterkeys() works exactly the same as above. Take your pick as to which form you want to use. users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}for k in users.iterkeys(): print k, '=>', users[k]# printslastname => Smithage => 27firstname => John
  • A third method to retrieve and process keys in a loop involves using the built-in function iter(). users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}for k in iter(users): print k, '=>', users[k]# printslastname => Smithage => 27firstname => John
  • When you need the index of the key being processed, use the enumerate() built-in function as shown. users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}for index, key in enumerate(users): print index, key, '=>', users[k]# prints0 lastname => John1 age => John2 firstname => John

在鍵值對上循環

  • When you want to retrieve each key-value pair with a single call, use iteritems(). users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}for k, v in users.iteritems(): print k, '=>', v# printslastname => Smithage => 27firstname => John

迭代值

  • The method itervalues() can be used to iterate over all the values in the dictionary. Though this method looks similar to a loop using values(), it is more efficient since it does not extract all the values at once. users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}for value in users.itervalues(): print value# printsSmith27John

提取數組

以下方法描述以數組形式提取各種Python字典信息。生成的數組可以使用普通的python構造進行循環。但是,請記住,根據字典的大小,返回的數組可能很大。因此,處理這些數組可能比使用上面的迭代器方法更昂貴(內存方面)。

使用這些數組是可以接受的一種情況是,當遇到不需要的元素時,需要從字典中刪除項。修改字典時使用迭代器可能會導致運行時錯誤。

  • The method items() returns an array of key-value tuples. You can iterate over these key-value pairs as shown: users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}for k, v in users.items(): print k, '=>', v# printslastname => Smithage => 27firstname => John
  • Retrieve all the keys in the dictionary using the method keys(). users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}print users.keys()# prints['lastname', 'age', 'firstname']Use the returned array to loop over the keys. for k in users.keys(): print k, '=>', users[k]# printslastname => Smithage => 27firstname => John
  • In a similar way, use the method values() to retrieve all the values in the dictionary. for value in users.values(): print value# printsSmith27John

如何使用python詞典?

在本文中,我們嘗試介紹python字典最常見的用例。請務必查看我們的所有其他Python文章,以獲得更多Python技巧。如果您有其他用例,您覺得應該包括在內,請在下面的評論中告訴我們!

圖片來源:viper345/Shutterstock

  • 發表於 2021-03-14 05:15
  • 閱讀 ( 39 )
  • 分類:程式設計

你可能感興趣的文章

菲律賓比索(php)和python(python)的區別

關鍵區別——php與python PHP和Python是兩種流行的程式語言。PHP和Python的關鍵區別在於PHP專門用於web開發,而Python則用於web開發並作為一種通用程式語言。 PHP是一種為web開發而設計的伺服器端指令碼語言。Python是一種用於通用程...

  • 發佈於 2020-10-18 23:19
  • 閲讀 ( 50 )

perl公司(perl)和python(python)的區別

關鍵區別–perl與python 計算機程式為計算機執行任務提供指令。一組指令被稱為計算機程式。計算機程式是用程式語言開發的。高階語言程式設計師可以理解,但計算機卻不能理解。因此,這些程式被轉換成機器可理解的格式...

  • 發佈於 2020-10-19 17:38
  • 閲讀 ( 38 )

紅寶石(ruby)和python(python)的區別

關鍵區別——ruby與python Ruby和Python是高階程式語言,因為它們遵循與英語語言相似的語法。因此,程式設計師很容易理解這些語言。Ruby和Python都是解釋語言。兩種語言都有大量的社群支援。Ruby和Python的一個主要優點是這些語...

  • 發佈於 2020-10-19 17:41
  • 閲讀 ( 56 )

學習python?下面是如何複製檔案

您想提高Python技能嗎?然後,您可以嘗試使用Python在計算機上執行一些任務。使用Python將檔案從一個目錄複製和貼上到另一個目錄是一種有趣的方法。 ...

  • 發佈於 2021-03-11 10:45
  • 閲讀 ( 50 )

如何在python中使用列表理解

在Python中及時使用列表理解可以使迭代列表操作變得容易。除了一行之外,它的可讀性更高,執行效率也更高。 ...

  • 發佈於 2021-03-11 10:55
  • 閲讀 ( 53 )

如何用python程式設計和控制arduino

Python風靡了編碼界。隨著這門新語言的興起,DIY電子領域也蓬勃發展。來自Arduino和Raspberry Pi等公司的開發板和單板計算機改變了人們生產家用電子產品的方式。如果你能用Python程式設計一個Arduino,那不是很棒嗎? ...

  • 發佈於 2021-03-11 16:20
  • 閲讀 ( 72 )

electron開放框架以及為什麼它對應用程式開發非常棒

... 這對使用者和開發者來說都是好事。人們不必擔心如何找到程式的替代品,這一事實有助於降低在作業系統之間切換的障礙。除此之外,它還為編寫軟體的人員提供了更高的使用者覆蓋率,而且只需付出最小的努力。 ...

  • 發佈於 2021-03-12 14:53
  • 閲讀 ( 49 )

為什麼c程式設計仍然值得學習

...言相比:JavaScript有1604k的pull請求,Java有763k的pull請求,Python有744個pull請求。Ruby、PHP、C++和CSS也擊敗了C. ...

  • 發佈於 2021-03-13 03:02
  • 閲讀 ( 54 )

用這些免費的線上互動式shell在瀏覽器中試用python

如果您正在考慮學習Python,那麼您可能會被初始設定過程弄得不知所措。您需要在系統上安裝Python,然後學習如何使用命令列處理程式碼,或者學習如何使用互動式shell,或者學習如何設定pythonide。 ...

  • 發佈於 2021-03-15 00:25
  • 閲讀 ( 52 )

幫助您快速學習的10個基本python示例

如果你今天要學習一門新語言,Python就是其中一種選擇。它不僅相對容易學習,而且有許多實際用途,可以在不同的技術相關職業中派上用場。 ...

  • 發佈於 2021-03-16 13:29
  • 閲讀 ( 47 )