Python 中过滤非 None 字典键
Python 字典是以下 4 种数据类型中最流行的一种。字典定义了键值对,并且不允许重复。值可以是字符串或整数。有时,在处理字典时,它会有一些空值,可以使用 None 值来填充。例如,当我们处理机器学习数据集时,会发现某些行是空的,在执行特定任务时,可以使用 None 值来填充。在 Python 中,我们有一些内置函数,如 items() 和 lambda,可以用来过滤 Python 中的非 None 字典键。
让我们来看一个例子:
The given dictionary, {‘A’: 11, ‘B’: None, ‘C’: 29, ‘D’: None} Then the final result becomes {‘A’: 11, ‘C’: 29}
语法
以下语法在示例中使用:
items()
items() 是 Python 中一个内置方法,允许它遍历字典中的键和值。
lambda
函数 lambda 提供了一种使用 lambda 关键字声明简短匿名函数的快捷方式。lambda 函数的行为与使用 def 关键字声明时相同。
使用字典推导式
该程序设置键和值,通过使用字典推导式将一个字典转换为另一个字典。然后使用名为 items() 的内置函数和条件 if 语句从列表中过滤 None 值。
示例
在下面的示例中,它将使用创建新字典的字典推导式。在 return 语句中,它使用 items() 方法遍历字典中的键值对。然后检查每个键值对,如果值不是 None,则将键值对包含在新字典中。然后创建原始字典以设置其值。接下来,使用调用函数来调用该函数,它被称为递归并将其存储在变量 filtered_dict 中。最后,我们借助变量 filtered_dict 打印结果。
def filter_none(dictionary): return {key: value for key, value in dictionary.items() if value is not None} # Create the dictionary my_dict = {'a': 10, 'b': None, 'c': 30, 'd': None, 'e': 50} filtered_dict = filter_none(my_dict) print("After filter of Non-none dictionary key:\n", filtered_dict)
输出
After filter of Non-none dictionary key: {'a': 10, 'c': 30, 'e': 50}
使用 filter() 函数
该程序使用 filter() 函数,该函数接受两个参数作为内置函数,即 lambda 和 items(),用于过滤 Python 中的非 None 字典键。
示例
在下面的示例中,我们将展示名为 filter() 的内置函数以及 lambda 来从字典中删除值。通常,此返回值函数充当列表推导式。然后它将创建输入字典以设置 none 值,接下来它将使用调用函数传递输入字典并获取结果。
def filter_non_none_dict_filter(dictionary): return dict(filter(lambda item: item[1] is not None, dictionary.items())) my_dict = {'I': 100, 'II': None, 'III': 300, 'IV': None, 'V': None} filtered_dict = filter_non_none_dict_filter(my_dict) print("After the filter of Non-none dictionary key:\n", filtered_dict)
输出
After the filter of Non-none dictionary key: {'I': 100, 'III': 300}
使用 for 循环和字典
该程序使用 for 循环迭代字典项的键和值,并使用 if 语句根据 None 检查条件,这将过滤 Python 中的非 None 字典键。
示例
在下面的示例中,从名为 filter_dict_loop 的函数开始程序,该函数接受名为 dictionary 的参数以接收其值。然后在变量 filter_dict 中创建空字典,该变量将仅存储键的整数值。现在使用 for 循环,该循环使用方法 items() 迭代字典的键和值。使用 if 语句,它将检查是否发现值为 none,然后它将自动从字典中删除 key : value。接下来,返回函数。继续创建包含键中整数和 none 值组合的字典,并将其存储在变量 my_dict 中。函数调用用于调用函数以将参数作为名为 f_dict 的变量传递。最后,我们借助变量 f_dict 打印结果。
def filter_dict_loop(dictionary): filtered_dict = {} for key, value in dictionary.items(): if value is not None: filtered_dict[key] = value return filtered_dict # Create the dictionary my_dict = {'A': 91, 'B': None, 'C': 33, 'D': 78, 'E': 5} f_dict = filter_dict_loop(my_dict) print("After the filter of Non-none dictionary key:\n", f_dict)
输出
After the filter of Non-none dictionary key: {'A': 91, 'C': 33, 'D': 78, 'E': 5}
使用带有条件三元表达式的字典推导式
该程序使用字典推导式将原始字典转换为过滤后的字典,条件三元表达式是在一行中编写 if-else 语句的一种方式。它通常用于字典推导式中以有条件地包含键值对。
示例
在下面的示例中,通过定义一个名为 filter_dict_conditional 的递归函数开始程序,该函数接受字典参数以访问其所有键和值元素。然后它通过删除非 None 字典键来返回函数。接下来,它将创建字典以设置键及其值,并将其存储在变量 my_dict 中。现在使用调用函数将参数作为名为 my_dict 的变量传递,并将其存储在变量 filtered_dict 中。最后,借助变量 filtered_dict 打印结果。
def filter_dict_conditional(dictionary): return {key: value for key, value in dictionary.items() if value if not None} my_dict = {'ABC': 11, 'DEF': None, 'GHI': 13, 'JKL': None, 'MNO': 15} filtered_dict = filter_dict_conditional(my_dict) print("After the filter of Non-none dictionary key:\n", filtered_dict)
输出
After the filter of Non-none dictionary key: {'ABC': 11, 'GHI': 13, 'MNO': 15}
结论
我们讨论了理解 Python 中非 None 字典键过滤的各种方法。可以使用 items()、lambda 和 filter() 等各种内置方法来删除非 None 值。此程序涉及机器学习数据集的实际示例,通过根据字典提供特定条件,将空数据值填充为 none。