在 Python 中过滤非 None 字典键

pythonserver side programmingprogramming

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())可用于删除非无值。该程序与机器学习数据集的实际示例相关,同时通过根据字典给出特定条件将空数据值填充为无。


相关文章