python 中高效模擬 php array_column 函數(shù)
在 python 中,處理嵌套列表并提取特定列的數(shù)據(jù)是常見需求。本文將展示如何高效地模擬 PHP 的 array_column 函數(shù)功能,并提供兩種實現(xiàn)方式:一種用于提取單列數(shù)據(jù),另一種用于構(gòu)建鍵值對字典。
場景: 假設(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)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END