从父字典创建叶子字典



有一个字典说d,让n>0

d = {
'leaf1': 1,
'leaf2': 2,
'leaf3': 3,
'leaf4': 4,
'leaf5': 5,
'leaf6': 6
}

我想创建一个字典列表(比如b)从d

中获取n个元素则当n = 1时,

b = [{'leaf1': 1},
{'leaf2': 2},
{'leaf3': 3},
{'leaf4': 4},
{'leaf5': 5},
{'leaf6': 6}]

当n = 2时,b

b = [{'leaf1': 1, 'leaf2': 2 },
{'leaf2': 2, 'leaf3': 3},
{'leaf3': 3,'leaf4': 4},
{'leaf4': 4,'leaf5': 5},
{'leaf5': 5,'leaf6': 6},
{'leaf6': 6,'leaf1': 1}]

当n = 3时,b为

b = {'leaf1': 1, 'leaf2': 2 , 'leaf3': 3},
{'leaf2': 2, 'leaf3': 3,'leaf4': 4},
{'leaf3': 3,'leaf4': 4,'leaf5': 5},
{'leaf4': 4,'leaf5': 5,'leaf6': 6},
{'leaf5': 5,'leaf6': 6,'leaf1': 1},
{'leaf6': 6,'leaf1': 1,'leaf2': 2}]

要创建一个一次包含n个元素的字典列表,我们可以首先循环len(d.s keys()),即字典中元素的总数,然后循环遍历我们必须添加到列表元素的索引。由于索引可能会大于d.keys()的长度,所以我在循环中添加了一个检查,我们可以从len(d.keys())开始减少索引,从0开始。

def createLeafDictionary(d, n):
array = []
for i in range(len(d.keys())):
leaf = {}
keyList = list(d.keys())
for j in range(i, i+n):
if j >= len(d.keys()):
j = j - len(d.keys())
leaf[keyList[j]] = d[keyList[j]]
array.append(leaf)
return array

keyList变量,我使用它来创建字典键列表,我们可以使用它来访问字典值。