【发布时间】:2019-01-05 06:31:28
【问题描述】:
假设我有以下列表:
l = [['01', 'pharma', 'P'],['02', 'y', '01'],['03', 'x', '01'],['05', 'z', '03']]
其中每个嵌套列表中的元素分别是 key、name 和 parent_key。如果 parent_key 为“P”,则表示它是祖父母。
例子:
['02', 'y', '01'] 中的第三个元素是 '01' 是 'y' 的 parent_key,这意味着它是 'pharma' 的子元素,以 '01' 作为键。
我想创建一个父/子字典,我可以查询以打印以下内容:
pharma
x
z
y
其中“pharma”是父级,“x”和“y”是“pharma”的子级,“z”是“x”的子级。每个子级都比其父级缩进一个空格。
我尝试过的如下:
from collections import defaultdict
d = defaultdict(list)
for i in l:
d[i[0]] = []
if i[2] in d.keys():
d[i[2]].append(i[1])
但它不会产生所需的输出
【问题讨论】:
-
是否需要保留索引键,即
01、02等?您的二级存储名称而不是键是否有原因? -
@MisterMiyagi 不,索引键并不重要。我想在没有钥匙的情况下显示父母及其子女/孙子女,如果这有意义吗?
-
键名和名字是唯一的吗,或者同一个名字可以应用于多个名字?
-
@MisterMiyagi 他们是独一无二的。
-
@MisterMiyagi 不,它们可以出现在列表中的任何位置。
标签: python dictionary