在 Python 中过滤非 None 字典键
Python 字典是以下 4 种数据类型中最流行的数据类型之一。字典用值对定义键,不允许重复。值可以是字符串或整数。有时,在处理字典时,它会有一些空值,而 None 值可以填充这些空值。例如,当我们处理机器学习数据集时,会发现有些行是空的,在执行特定任务时可以用值 None 填充。在 Python 中,我们有一些内置函数,如 items() 和 lambda,可用于在 Python 中过滤非无字典键。
让我们举个例子 -
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 关键字声明简短匿名函数的快捷方式。当使用 def 关键字声明时,lambda 函数会表现出来。
使用字典推导式
程序使用字典推导式设置键和值以将一个字典转换为另一个字典。然后使用名为 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} # 创建字典 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 # 创建字典 my_dict = {'A': 91, 'B': None, 'C': 33, 'D': 78, 'E': 5} f_dict = filter_dict_loop(my_dict) print("非无字典键过滤后:\n", f_dict)
输出
非无字典键过滤后: {'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 中非无字典键的过滤。各种内置方法(如 items()、lambda 和 filter())可用于删除非无值。该程序与机器学习数据集的实际示例相关,同时通过根据字典给出特定条件将空数据值填充为无。