Python - K 列表字典网格
术语字典网格的定义是将每个键集的值对存储到字典中。将 K 列表包含在字典中意味着将列表作为值对插入。在Python中,我们有一些内置函数,例如defaultdict()和lambda将用于解决K列表字典网格。
让我们举一个例子。
给定输入列表,
list1 = [10, 20, 30] list2 = [40, 50]
最终输出变为:
{10:{40:[],50:[]},20:{40:[],50:[]},30:{40:[],50:[]}}
语法
示例中使用了以下语法-
lambda
lambda 函数提供了一种使用 lambda 关键字声明简短匿名函数的快捷方式。lambda 函数仅包含简单表达式。
defaultdict()
defaultdict() 是 Python 中内置的函数,可创建一个简单的字典,但它使用集合模块进行初始化。
示例 1:使用嵌套 for 循环
在下面的示例中,我们将通过将两个列表值分别存储在变量 list1 和 list2 中来启动程序。然后将空字典存储在变量 K 中,该变量将以字典的形式创建结果。然后使用 for 循环,其中变量 i 遍历第一个列表,即 list1,并将元素设置为键,将值设置为 {}。接下来,使用另一个 for 循环遍历 list2 并将二维数组作为值设置为第一个列表,然后显示输出。
示例
list1 = [3, 2] list2 = [30, 20] K = {} for i in list1: K[i] = {} for j in list2: K[i][j] = [] print("字典网格的结果:\n", K)
输出
字典网格的结果: {3: {30: [], 20: []}, 2: {30: [], 20: []}}
示例 2:使用字典推导和嵌套循环
在下面的示例中,通过创建两个各自变量的列表来启动程序。然后使用字典推导,其中一个空列表和两个嵌套的 for 循环遍历输入列表以概括结果。
示例
list1 = [1, 2, 3, 4] list2 = [100, 200] K = {i: {j: [] for j in list2} for i in list1} print("字典网格的结果:\n", K)
输出
字典网格的结果: {1: {100: [], 200: []}, 2: {100: [], 200: []}, 3: {100: [], 200: []}, 4: {100: [], 200: []}}
示例 3:使用 collections 模块中的 defaultdict
在下面的示例中,我们将通过从库 collections 中导入模块 defaultdict 来启动程序,该库允许用户将默认值设置为键。然后在变量中创建两个输入列表 - list1 和 list2。接下来,定义内置函数 defaultdict() 和 lambda 来计算字典网格。继续使用嵌套 for 循环迭代输入列表并找到结果。
示例
from collections import defaultdict list1 = [10, 20, 30, 40, 50] list2 = [5, 6, 7] K = defaultdict(lambda: defaultdict(list)) for i in list1: for j in list2: K[i][j] = [] print(dict(K))
输出
{10: defaultdict(<class 'list'>, {5: [], 6: [], 7: []}), 20: defaultdict(<class 'list'>, {5: [], 6: [], 7: []}), 30: defaultdict(<class 'list'>, {5: [], 6: [], 7: []}), 40: defaultdict(<class 'list'>, {5: [], 6: [], 7: []}), 50: defaultdict(<class 'list'>, {5: [], 6: [], 7: []})}
结论
我们讨论了字典网格,以探索解决该问题陈述的各种方法。该程序允许用户从单个列表中匹配相应元素并在字典中创建键值。因此,这是一种更简单的结构化可关联数据的方法。