需要使用键值对创建Python级别的字典结构
我会尽力解释我的问题。目前我有一个字典(名为level_map),其中包含键和值(值是键应该存储的级别) 例: 名称:测试 价值:1 名称:Test2 价值:2 名称:Test3 价值:3 名称:Test4 价值:3 应该是这样的需要使用键值对创建Python级别的字典结构,python,database,data-structures,Python,Database,Data Structures,我会尽力解释我的问题。目前我有一个字典(名为level_map),其中包含键和值(值是键应该存储的级别) 例: 名称:测试 价值:1 名称:Test2 价值:2 名称:Test3 价值:3 名称:Test4 价值:3 应该是这样的 Test | |---Test2 | |---Test3 | |---Test4 |---Test5 我的问题是,我如何获取level_map(我的dict obj)并将
Test
|
|---Test2
|
|---Test3
|
|---Test4
|---Test5
我的问题是,我如何获取level_map(我的dict obj)并将其转换为所有不同级别的dict中的dict,因为最终,我将在网页上创建一个表视图。我试着去想这个问题,但我还是不知道从哪里开始。任何出发点都很好。谢谢各位
编辑
以下是我的等级地图(dict obj)的结构:
level_map = {
"Test": 1,
"Test2": 2,
"Test3": 3,
"Test4": 4,
"Test5": 4
}
我希望新的dict obj是这样的:
new_level_map = {
"Test":{
"Test2":{
"Test3": {
"Test4",
"Test5"
}
}
}
}
如果您按值对词典进行排序,然后对它们进行分组,那么您可以在构建词典时从内到外对它们进行迭代
reduce()
很好,但为了清晰起见,这里有一个简单的循环。它还使用操作符.itemgetter
使其更具可读性。如果您愿意,您当然可以使用lambdas:
这从最深的对象作为一个集合开始,然后不断添加命令:
from itertools import groupby
from operator import itemgetter
first = itemgetter(0)
second = itemgetter(1)
level_map = {
"Test": 1,
"Test2": 2,
"Test3": 3,
"Test4": 4,
"Test5": 4
}
items = sorted(level_map.items(), key=second, reverse=True)
groups = (map(first, g) for _, g in groupby(items, key = second))
curr = set(next(groups)) # deepest
for item in groups:
curr = {next(item): curr}
print(curr)
打印::
{'Test': {'Test2': {'Test3': {'Test4', 'Test5'}}}}
你能提供字典的真实结构,就像它在代码中的样子吗?你的例子是如何运作的还不清楚。我们不知道我们正在处理什么样的输入,也不知道您希望得到什么样的输出。我指的是您的示例。您的确切输入是什么?简单地说,做一个
打印(level\u map)
并显示输出。还有实际字典格式的预期结果,如{'key1':'value1'}
。对此感到抱歉。我在我的帖子中添加了一个编辑。谢谢!感谢你的回答。