在 Python 中如何實現(xiàn)類似 PHP array_column 函數(shù)的功能?

python 中高效模擬 php array_column 函數(shù)

python 中,處理嵌套列表并提取特定列的數(shù)據(jù)是常見需求。本文將展示如何高效地模擬 PHP 的 array_column 函數(shù)功能,并提供兩種實現(xiàn)方式:一種用于提取單列數(shù)據(jù),另一種用于構(gòu)建鍵值對字典。

在 Python 中如何實現(xiàn)類似 PHP array_column 函數(shù)的功能?

場景: 假設(shè)我們有一個包含字典的列表:

nested_list = [     {'id': 1, 'name': 'Alice', 'age': 25},     {'id': 2, 'name': 'Bob', 'age': 30},     {'id': 3, 'name': 'Charlie', 'age': 35}, ]

我們需要從中提取所有 id 列的值,或者創(chuàng)建一個新的字典,以某個字段的值作為鍵,另一個字段的值作為值。

立即學習PHP免費學習筆記(深入)”;

方法一:提取單列數(shù)據(jù)

此函數(shù)從列表中提取指定列名的所有值,返回一個列表:

def extract_column(data, column_name):     """     從列表中提取指定列名的所有值。      Args:         data: 包含字典的列表。         column_name: 要提取的列名。      Returns:         包含提取值的列表。  如果輸入數(shù)據(jù)無效,返回空列表。     """     try:         return [item[column_name] for item in data]     except (KeyError, TypeError):         return [] # 處理異常情況,例如列名不存在或數(shù)據(jù)類型錯誤 

方法二:構(gòu)建鍵值對字典

此函數(shù)從列表中提取指定鍵名和值名的列,構(gòu)建一個字典:

def extract_column_to_dict(data, key_column_name, value_column_name):     """     從列表中提取指定鍵名和值名的列,構(gòu)建一個字典。      Args:         data: 包含字典的列表。         key_column_name: 鍵名對應(yīng)的列名。         value_column_name: 值對應(yīng)的列名。      Returns:         包含提取鍵值對的字典。如果輸入數(shù)據(jù)無效,返回空字典。     """     try:         return {item[key_column_name]: item[value_column_name] for item in data}     except (KeyError, TypeError):         return {} # 處理異常情況 

使用方法:

data = [     {'id': 1, 'name': 'Alice', 'age': 25},     {'id': 2, 'name': 'Bob', 'age': 30},     {'id': 3, 'name': 'Charlie', 'age': 35}, ]  names = extract_column(data, 'name') print(f"Names: {names}")  # 輸出:Names: ['Alice', 'Bob', 'Charlie']  id_name_dict = extract_column_to_dict(data, 'id', 'name') print(f"ID-Name Dictionary: {id_name_dict}")  # 輸出:ID-Name Dictionary: {1: 'Alice', 2: 'Bob', 3: 'Charlie'}  #處理異常情況 empty_result = extract_column(data, 'nonexistent_column') print(f"Empty Result: {empty_result}") # 輸出:Empty Result: []  invalid_data = [1,2,3] invalid_result = extract_column(invalid_data, 'name') print(f"Invalid Data Result: {invalid_result}") # 輸出:Invalid Data Result: []

這兩個函數(shù)提供了靈活且健壯的方案,可以有效地模擬 PHP array_column 函數(shù)的功能,并優(yōu)雅地處理潛在的錯誤。 它們比簡單的列表推導式更具容錯性,能夠更好地處理各種輸入情況。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊8 分享