不間斷 Python 挑戰 Day 15 - 更多關於字典 (Dictionary)

更新於 發佈於 閱讀時間約 10 分鐘
前面的文章中我們學習了關於字典的基本用法,今天再討論更多關於字典的其它用法,以及它和串列、元組等的關聯。

使用for迴圈迭代

  • 字典可以使用for迴圈迭代,最簡單的語法如下,須注意此處取得的是字典的鍵:
cities_dict = { "台北": 2531659,
         "新北": 4011586,
         "桃園": 2272452,
         "台中": 2814422,
         "台南": 1863435,
         "高雄": 2746939}

for city in cities_dict:
  print(city, end=" ")
執行結果:
台北 新北 桃園 台中 台南 高雄
  • 明確一點,若要取得字典的鍵可以使用字典的keys()方法:
for city in cities_dict.keys():
  print(city, end=" ")
執行結果和前面相同:
台北 新北 桃園 台中 台南 高雄
  • 若想取得的是字典的值,可以使用字典的values()方法:
for population in cities_dict.values():
  print(population, end=" ")
執行結果:
2531659 4011586 2272452 2814422 1863435 2746939
  • 也可以鍵和值同時取出,使用的是字典的items()方法,字典的鍵將傳給city、字典的值將傳給population:
for city, population in cities_dict.items():
  print(city, population, end=" ")
執行結果:
台北 2531659 新北 4011586 桃園 2272452 台中 2814422 台南 1863435 高雄 2746939
  • 實際上,items()方法傳回的資料型態是元組,上述方法只是用兩個變數分別去存取元組的內容:
for city_pop in cities_dict.items():
  print(city_pop, end=" ")
執行結果:
('台北', 2531659) ('新北', 4011586) ('桃園', 2272452) ('台中', 2814422) ('台南', 1863435) ('高雄', 2746939)

串列元素為字典

串列內的元素可以是字典,在以上的例子中,當每個城市除了人口數之外,需要記錄的特徵變多了,例如城市的面積,我們可以把每個城市的資訊建成一個字典,再把所有的字典放入一個串列中管理。
city0 = { "name": "台北", "population": 2531659, "area": 271}
city1 = { "name": "新北", "population": 4011586, "area": 2052}
city2 = { "name": "桃園", "population": 2272452, "area": 1220}
city3 = { "name": "台中", "population": 2814422, "area": 2214}
city4 = { "name": "台南", "population": 1863435, "area": 2191}
city5 = { "name": "高雄", "population": 2746939, "area": 2951}
special_municipality_list = [city0, city1, city2, city3, city4, city5]
for city in special_municipality_list:
  print(city)
執行結果:
{'name': '台北', 'population': 2531659, 'area': 271}
{'name': '新北', 'population': 4011586, 'area': 2052}
{'name': '桃園', 'population': 2272452, 'area': 1220}
{'name': '台中', 'population': 2814422, 'area': 2214}
{'name': '台南', 'population': 1863435, 'area': 2191}
{'name': '高雄', 'population': 2746939, 'area': 2951}

字典的值為串列

字典內的值可以為串列,如以下例子分別列舉了亞洲、歐洲與美洲做為字典的鍵,各大洲的一些國家分別儲存在陣列,做為字典的值,搭配字典的items()方法可以將其內容取出。
countries_dict = { "Asia": ["Japan", "Korea", "Taiwan"],
           "Europe": ["Germany", "France", "Spain"],
           "America": ["USA", "Canada", "Argentina"]}
for continent, country in countries_dict.items():
  print(f"{continent}: {country}")
執行結果:
Asia: ['Japan', 'Korea', 'Taiwan']
Europe: ['Germany', 'France', 'Spain']
America: ['USA', 'Canada', 'Argentina']

字典的值為字典

字典內的值也可以為字典,我們改寫前面字典串列的例子,把城市名稱做為鍵、城市的資訊做為值存入字典,再搭配字典的items()方法將其內容取出。
cities_dict = { "台北": {"population": 2531659, "area": 271},
         "新北": {"population": 4011586, "area": 2052},
         "桃園": {"population": 2272452, "area": 1220},
         "台中": {"population": 2814422, "area": 2214},
         "台南": {"population": 1863435, "area": 2191},
         "高雄": {"population": 2746939, "area": 2951}}
for city, info in cities_dict.items():
  print(f"{city}: {info}")
執行結果:
Asia: ('Japan', 'Korea', 'Taiwan')
Europe: ('Germany', 'France', 'Spain')
America: ('USA', 'Canada', 'Argentina')

程式範例

為什麼會看到廣告
avatar-img
47會員
36內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Wei-Jie Weng的沙龍 的其他內容
在程式設計中,我們會使用到一些固定不會變動的資料內容,例如一年的月份、物體的邊長、過去一周的氣溫等等,使用串列的結構固然也可以用來儲存這些資料,但串列可以被新增或刪除,不能有效保護這類不可變動的資料。因此,Python也提供了另一種形式的資料結構,稱為元組,它的資料結構和串列相同,但資料的內容不可變
當我們查字典時,會先找到想查詢的單字在字典裡的位置,才能在那個位置找到單字的定義;在Python中,也有一個類似的資料結構稱作字典,字典的鍵(key)就對應到我們要查詢的單字,字典的值(value)則是該單字的定義。
隨著程式的功能愈來愈複雜,程式碼也愈來愈多,若程式從頭寫到尾沒有任何的段落,可讀性會愈來愈差,甚至會發現同樣的一段程式碼重覆很多遍,因為類似的功能區塊在程式中可能會一再出現。這樣的程式碼不利於多人的協作開發,即使是寫作者本身在一段時間後回來看,可能也難以一眼就掌握程式的主要架構。
另一種迴圈的形式是while迴圈,和for迴圈常常可以達到相同的功能,差別在於for迴圈是在一定的範圍內迭代,例如從1到100,或是串列裡的每一個元素;而while迴圈是一個條件判斷的迴圈,當滿足這個條件就執行迴圈的內容,不滿足時就跳出迴圈。
目前為止,我們學到了基本的for迴圈,也就是僅對一個可迭代物件進行迭代。當一個迴圈裡面還有另一個迴圈,這時就形成了巢狀迴圈,最基本的例子就是九九乘法表,每個被乘數都對應到9個乘數,當被乘數和9個乘數都計算完了之後,才換下一個被乘數,不斷迴圈直到每個被乘數和乘數都計算過。另個for迴圈的應用是將串列和
綜合前幾天所學的內容,這裡實作了一個專題-密碼產生器。在這個專題中,我們運用了變數、串列、for迴圈、random模組等概念,讓使用者可以從數字、符號、英文字母中指定字元的數目,隨機生成一串密碼。
在程式設計中,我們會使用到一些固定不會變動的資料內容,例如一年的月份、物體的邊長、過去一周的氣溫等等,使用串列的結構固然也可以用來儲存這些資料,但串列可以被新增或刪除,不能有效保護這類不可變動的資料。因此,Python也提供了另一種形式的資料結構,稱為元組,它的資料結構和串列相同,但資料的內容不可變
當我們查字典時,會先找到想查詢的單字在字典裡的位置,才能在那個位置找到單字的定義;在Python中,也有一個類似的資料結構稱作字典,字典的鍵(key)就對應到我們要查詢的單字,字典的值(value)則是該單字的定義。
隨著程式的功能愈來愈複雜,程式碼也愈來愈多,若程式從頭寫到尾沒有任何的段落,可讀性會愈來愈差,甚至會發現同樣的一段程式碼重覆很多遍,因為類似的功能區塊在程式中可能會一再出現。這樣的程式碼不利於多人的協作開發,即使是寫作者本身在一段時間後回來看,可能也難以一眼就掌握程式的主要架構。
另一種迴圈的形式是while迴圈,和for迴圈常常可以達到相同的功能,差別在於for迴圈是在一定的範圍內迭代,例如從1到100,或是串列裡的每一個元素;而while迴圈是一個條件判斷的迴圈,當滿足這個條件就執行迴圈的內容,不滿足時就跳出迴圈。
目前為止,我們學到了基本的for迴圈,也就是僅對一個可迭代物件進行迭代。當一個迴圈裡面還有另一個迴圈,這時就形成了巢狀迴圈,最基本的例子就是九九乘法表,每個被乘數都對應到9個乘數,當被乘數和9個乘數都計算完了之後,才換下一個被乘數,不斷迴圈直到每個被乘數和乘數都計算過。另個for迴圈的應用是將串列和
綜合前幾天所學的內容,這裡實作了一個專題-密碼產生器。在這個專題中,我們運用了變數、串列、for迴圈、random模組等概念,讓使用者可以從數字、符號、英文字母中指定字元的數目,隨機生成一串密碼。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這次主題是字典。字典是一種靈活的數據結構,用於儲存鍵值對。它們提供快速的查找功能,適合管理數據。 文章展示了如何用字典來儲存和操作旅遊地點的中文和英文名稱,例如如何讀取、新增、修改和刪除項目。這些基本操作在資料分析和工作中至關重要。未來 Rex 會介紹更多資料結構的應用,歡迎繼續關注並留言交流!
Thumbnail
題目敘述 Kth Distinct String in an Array 給定一個輸入陣列arr 和 參數k 請返回第k個出現恰好一次的陣列元素。
在檢查列表中含有tuple的座標點時,若要給其他演算法做運算時若有其中有tuple有空值時,就會報錯。 本文主要介紹兩種方法可以檢查是否有空值 程式範例1 positon_list =[(42,123),(None,None),(22,11)] for cord in positon_lis
Thumbnail
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
題目會給定我們一個輸入陣列connections,和城市的總數目n。 輸入陣列裡面是以pair的方式儲存,(a, b) 分邊代表這條邊的起點和終點。 請問,我們需要改變多少條邊的方向,才能讓每條路徑都指向編號零號的城市( City #0)? 註: 題目還保證,在改變方向之後,一定可以讓每座城
Thumbnail
本文介紹了Python中zip與enumerate函式的使用,以及它們的語法說明和程式範例。zip函式允許同時迭代多個可迭代對象,這使得程式碼更簡潔;而enumerate函式則在迭代時,提供元素的索引,使得實用工具,尤其是當需要追蹤元素的位置時。
Thumbnail
本文介紹了串列運算式的應用,以及與Lambda匿名函式方法的比較,並提供了程式範例。串列運算式提供了一種簡潔的語法,用於創建、轉換和過濾列表。lambda函式用於創建匿名函式,通常用於簡單的操作。建議在比較複雜的情況下使用一般for迴圈加if來表示。
Thumbnail
在日常中我們都會將很多事物定上了一個標籤,例如將商品標記價格,替孩子取姓名,公司上冠上職稱等等。 在Python中也有這種方法,就是字典的形式{ 'name' : 'crab', 'apple', 1000 }去呈現
Thumbnail
列表(List)和元組(Tuple)都是 Python 中用來存儲集合元素的數據結構,兩者看起來很像,在初學時很容易搞混,所以觀念要建立好。 可以把列表(List)和元組(Tuple)想像成是一個容器,什麼元素都可以塞
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這次主題是字典。字典是一種靈活的數據結構,用於儲存鍵值對。它們提供快速的查找功能,適合管理數據。 文章展示了如何用字典來儲存和操作旅遊地點的中文和英文名稱,例如如何讀取、新增、修改和刪除項目。這些基本操作在資料分析和工作中至關重要。未來 Rex 會介紹更多資料結構的應用,歡迎繼續關注並留言交流!
Thumbnail
題目敘述 Kth Distinct String in an Array 給定一個輸入陣列arr 和 參數k 請返回第k個出現恰好一次的陣列元素。
在檢查列表中含有tuple的座標點時,若要給其他演算法做運算時若有其中有tuple有空值時,就會報錯。 本文主要介紹兩種方法可以檢查是否有空值 程式範例1 positon_list =[(42,123),(None,None),(22,11)] for cord in positon_lis
Thumbnail
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
題目會給定我們一個輸入陣列connections,和城市的總數目n。 輸入陣列裡面是以pair的方式儲存,(a, b) 分邊代表這條邊的起點和終點。 請問,我們需要改變多少條邊的方向,才能讓每條路徑都指向編號零號的城市( City #0)? 註: 題目還保證,在改變方向之後,一定可以讓每座城
Thumbnail
本文介紹了Python中zip與enumerate函式的使用,以及它們的語法說明和程式範例。zip函式允許同時迭代多個可迭代對象,這使得程式碼更簡潔;而enumerate函式則在迭代時,提供元素的索引,使得實用工具,尤其是當需要追蹤元素的位置時。
Thumbnail
本文介紹了串列運算式的應用,以及與Lambda匿名函式方法的比較,並提供了程式範例。串列運算式提供了一種簡潔的語法,用於創建、轉換和過濾列表。lambda函式用於創建匿名函式,通常用於簡單的操作。建議在比較複雜的情況下使用一般for迴圈加if來表示。
Thumbnail
在日常中我們都會將很多事物定上了一個標籤,例如將商品標記價格,替孩子取姓名,公司上冠上職稱等等。 在Python中也有這種方法,就是字典的形式{ 'name' : 'crab', 'apple', 1000 }去呈現
Thumbnail
列表(List)和元組(Tuple)都是 Python 中用來存儲集合元素的數據結構,兩者看起來很像,在初學時很容易搞混,所以觀念要建立好。 可以把列表(List)和元組(Tuple)想像成是一個容器,什麼元素都可以塞