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 中的一个内置函数,它创建了一个简单的字典,但是它是通过 collection 模块进行初始化的。
示例 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("Result of Dictionary Mesh:\n", K)
输出
Result of Dictionary Mesh:
{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("Result of Dictionary Mesh:\n", K)
输出
Result of Dictionary Mesh:
{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: []})}
结论
我们讨论了字典网格以探索解决这个问题陈述的各种方法。该程序允许用户从一个单独的列表中匹配相应的元素并在字典中创建键值对。因此,这是一种更容易使相关数据结构化的方法。