python 中高效模拟 php array_column 函数
在 python 中,处理嵌套列表并提取特定列的数据是常见需求。本文将展示如何高效地模拟 PHP 的 array_column 函数功能,并提供两种实现方式:一种用于提取单列数据,另一种用于构建键值对字典。
场景: 假设我们有一个包含字典的列表:
nested_list = [ {'id': 1, 'name': 'Alice', 'age': 25}, {'id': 2, 'name': 'Bob', 'age': 30}, {'id': 3, 'name': 'Charlie', 'age': 35}, ]
我们需要从中提取所有 id 列的值,或者创建一个新的字典,以某个字段的值作为键,另一个字段的值作为值。
立即学习“PHP免费学习笔记(深入)”;
方法一:提取单列数据
此函数从列表中提取指定列名的所有值,返回一个列表:
def extract_column(data, column_name): """ 从列表中提取指定列名的所有值。 Args: data: 包含字典的列表。 column_name: 要提取的列名。 Returns: 包含提取值的列表。 如果输入数据无效,返回空列表。 """ try: return [item[column_name] for item in data] except (KeyError, TypeError): return [] # 处理异常情况,例如列名不存在或数据类型错误
方法二:构建键值对字典
此函数从列表中提取指定键名和值名的列,构建一个字典:
def extract_column_to_dict(data, key_column_name, value_column_name): """ 从列表中提取指定键名和值名的列,构建一个字典。 Args: data: 包含字典的列表。 key_column_name: 键名对应的列名。 value_column_name: 值对应的列名。 Returns: 包含提取键值对的字典。如果输入数据无效,返回空字典。 """ 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: []
这两个函数提供了灵活且健壮的方案,可以有效地模拟 PHP array_column 函数的功能,并优雅地处理潜在的错误。 它们比简单的列表推导式更具容错性,能够更好地处理各种输入情况。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END