Python 列表字典迭代


在本文中,我們將學習在 Python 中迭代字典列表的各種方法。在使用 Python 處理資料時,經常會遇到包含字典列表的情況。每個字典代表一個單獨的資料條目,您需要對這些字典執行操作或從中提取特定資訊。

使用 For 迴圈和字典訪問方法

這種方法是使用 for 迴圈迭代列表中的每個字典。在迴圈內部,我們可以使用字典訪問方法(如 keys()、values() 或 items())分別檢索鍵、值或鍵值對。

語法

keys()

dictionary.keys()

keys() 方法返回一個包含字典鍵的檢視物件。

values()

dictionary.values()

values() 方法返回一個包含字典值的檢視物件。

items()

dictionary.items()

items() 方法返回一個包含字典鍵值對(作為元組)的檢視物件。

解釋

  • 建立一個字典列表 `list_of_dict`。

  • 使用 for 迴圈迭代字典列表。

  • 現在我們使用 items() 方法訪問每個字典中的鍵值對。

  • 列印鍵值對。

示例

list_of_dict = [
    {"course": "DBMS", "price": 1500},
    {"course": "Python", "price": 2500},
    {"course": "Java", "price": 2500},
]

for dict in list_of_dict:
    for key, value in dict.items():
        print(key, ":", value)
    print("")

輸出

course : DBMS
price : 1500

course : Python
price : 2500

course : Java
price : 2500

使用列表推導式

列表推導式提供了一種迭代字典列表並在每個字典上執行操作的方法。現在我們將使用列表推導式迭代整個列表。

語法

[expression for element in iterable]
  • 可迭代物件:可以是列表、集合、元組或任何 Python 可迭代物件。

  • 元素:可迭代物件中的專案。

  • 表示式:我們要對元素執行的操作。

解釋

  • 建立一個字典列表 `list_of_dict`。

  • 使用列表推導式迭代列表並在單獨的列表中獲取字典中的資訊。

示例

list_of_dict = [
    {"course": "DBMS", "price": 1500},
    {"course": "Python", "price": 2500},
    {"course": "Java", "price": 2500},
]

# iterating through each dictionary
course= [dictionary["course"] for dictionary in list_of_dict]
price= [dictionary["price"] for dictionary in list_of_dict]

print(course)
print(price)

輸出

['DBMS', 'Python', 'Java']
[1500, 2500, 2500]

使用 map() 函式

map() 函式是一個內建的 Python 函式,它將指定的函式應用於可迭代物件中的每個專案(在本例中,可迭代物件是列表),並返回一個生成結果的迭代器。它接受兩個引數:要應用的函式和可迭代物件。

語法

map(function, iterable)
  • 可迭代物件:將應用指定函式的專案序列。

  • 函式:我們要應用於迭代器中專案的函式。

解釋

  • 建立一個字典列表。

  • 將函式和可迭代物件(即字典列表)傳遞給 map() 方法。

  • 使用 list() 方法將 map() 給出的結果轉換為列表。

示例

list_of_dict = [
    {"course": "DBMS", "price": 1500},
    {"course": "Python", "price": 2500},
    {"course": "Java", "price": 2500},
]

def func(dict):
    return dict["course"]

# applying the function to all the dictionaries present in the list.
course = list(map(func, list_of_dict))

print(course)

輸出

['DBMS', 'Python', 'Java']

使用 pandas 庫

DataFrame() 建構函式會將字典列表轉換為資料框。列表中的每個字典都將表示為資料框中的一行。在處理大型資料集時,迭代字典列表可能很方便。

語法

pd.DataFrame(iterable)

可迭代物件:元素序列。例如列表、元組。

解釋

  • 建立一個字典列表。

  • 將字典列表傳遞給 pandas 庫中的 DataFrame() 建構函式。

  • 建構函式將返回一個數據框物件,其中每個字典都是資料框中的一行。

示例

import pandas as pd

list_of_dict = [
    {"course": "DBMS", "price": 1500},
    {"course": "Python", "price": 2500},
    {"course": "Java", "price": 2500},
]

df = pd.DataFrame(list_of_dict)
print(df)

輸出

   course  price
0    DBMS   1500
1  Python   2500
2    Java   2500

在 pandas 庫的 DataFrame 類中使用 from_records() 方法

在這種方法中,我們將使用 from_records() 方法。pandas 中的 pd.DataFrame.from_records() 方法允許我們根據記錄列表(元組或結構化陣列)或可迭代物件建立 DataFrame。

語法

pd.DataFrame.from_records(data)
  • 資料:結構化陣列,在本例中為字典列表。

解釋

  • 建立一個字典列表。

  • 將列表傳遞給 from_records() 方法。

  • from_records() 方法將返回一個數據框,其中列表中的每個字典都是資料框中的一行。

示例

import pandas as pd

list_of_dict = [
    {"course": "DBMS", "price": 1500},
    {"course": "Python", "price": 2500},
    {"course": "Java", "price": 2500},
]
df = pd.DataFrame.from_records(list_of_dict)
print(df)

輸出

   course  price
0    DBMS   1500
1  Python   2500
2    Java   2500

結論

在本文中,我們探討了不同的方法,包括迴圈、列表推導式,甚至利用 pandas 庫的功能來迭代字典列表。學習愉快!

更新於:2023年8月9日

8000+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告