Python程序:提取自定义值的字典项
自定义值是在特定标准下定义和选择的特定值。在一个大型复杂的數據集中,**规范性**对于构建**优化**的程序非常重要,因此提取相关数据就变得非常重要。我们可以传递一个参考列表,根据该列表提取值。
此参考列表具有其自身的意义,因为它存储简洁的信息。在本文中,我们将讨论一个类似的概念,即针对通过列表传递的自定义数据提取字典项(键和值)。
理解问题
我们将创建一个包含某些数据的字典。每个键都将与不同的值关联,然后我们将传递一个存储多个值的参考列表。字典值等于参考值的所有字典项都将被提取,即应隔离与列表值匹配的字典中的所有值及其对应的“**键**”。
输入输出场景
让我们考虑一个具有以下值的字典:
Input: dict1 = {"Grapes":12, "Mangoes":18, "Apples":10, "Strawberries":4, "Coconut":24} lis1 = [13, 18, 4, 22]
我们可以看到,参考列表中的值“**18**”和“**4**”与字典键“**Mangoes**”和“**Strawberries**”的值匹配。因此,应返回以下输出:
Output: {'Mangoes': 18, 'Strawberries': 4}
既然我们已经理解了问题陈述,让我们讨论一些解决方案。
使用循环(迭代)
创建字典后,我们将使用**for循环**来迭代键和值。我们将创建一个空字典,它将只存储提取的字典项。
我们还将迭代参考列表,然后将每个列表值与不同的字典值进行匹配。我们将建立一个“**if**”条件来检查这些匹配值,然后将它们存储到空字典中。
示例
以下是使用循环提取自定义值的字典项的示例:
dict1 = {"Grapes":12, "Mangoes":18, "Apples":10, "Strawberries":4, "Coconut":24} lis1 = [13, 18, 4, 22] dict2 = {} print(f"The original dictionary is: {dict1}") for keys, values in dict1.items(): for x in lis1: if values == x: dict2[keys] = values print(f"The new dictionary consisting of custom values: {dict2}")
输出
The original dictionary is: {'Grapes': 12, 'Mangoes': 18, 'Apples': 10, 'Strawberries': 4, 'Coconut': 24} The new dictionary consisting of custom values: {'Mangoes': 18, 'Strawberries': 4}
使用字典推导式
执行此程序的另一种有效且简洁的方法是使用字典推导式。借助此技术,我们可以生成一行代码来涵盖整个迭代概念。这种方法允许我们编写一个简洁且易于阅读的程序来提取字典项。
示例
以下是一个示例:
dict1 = {"Grapes":12, "Mangoes":18, "Apples":10, "Strawberries":4, "Coconut":24} lis1 = [13, 18, 4, 22] print(f"The original dictionary is: {dict1}") dict2 = {keys: values for keys, values in dict1.items() if values in lis1} print(f"The new dictionary consisting of custom values: {dict2}")
输出
The original dictionary is: {'Grapes': 12, 'Mangoes': 18, 'Apples': 10, 'Strawberries': 4, 'Coconut': 24} The new dictionary consisting of custom values: {'Mangoes': 18, 'Strawberries': 4}
使用Lambda函数 + filter()函数
在这种方法中,我们将使用filter()函数来选择等于参考列表值的字典值。我们还将为此filter()函数的第一个参数传递一个**lambda函数**。
lambda函数将充当匿名过滤函数,用于确定过滤后的字典中是否应该存在字典项。“**items[1]**”指的是与每个键值对关联的值。
示例
以下是一个示例:
dict1 = {"Grapes":12, "Mangoes":18, "Apples":10, "Strawberries":4, "Coconut":24} lis1 = [13, 18, 4, 22] print(f"The original dictionary is: {dict1}") dict2 = dict(filter(lambda items: items[1] in lis1, dict1.items())) print(f"The new dictionary consisting of custom values: {dict2}")
输出
The original dictionary is: {'Grapes': 12, 'Mangoes': 18, 'Apples': 10, 'Strawberries': 4, 'Coconut': 24} The new dictionary consisting of custom values: {'Mangoes': 18, 'Strawberries': 4}
其他解决方案和宝贵见解
还有其他几种解决方案,包括使用“**map()**”函数以及lambda和filter函数。我们还可以将字典和列表值转换为“集合”,然后检索公共值。这些自定义值的检索在数据可视化和数据集管理中起着重要作用。我们还可以通过创建一个涵盖所有类型值的通用程序来检索其他数据类型。
结论
在本文中,我们讨论了提取自定义值字典项的各种解决方案。首先,我们使用简单的**迭代**方法遍历字典和参考列表值。在我们的第二种方法中,我们使用了**字典推导式**的概念,对于最终解决方案,我们使用了**filter()**和**lambda**函数。最后,我们讨论了一些替代解决方案以及一些与自定义值提取相关的宝贵见解。