Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要使用键值对创建Python级别的字典结构_Python_Database_Data Structures - Fatal编程技术网

需要使用键值对创建Python级别的字典结构

需要使用键值对创建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)并将

我会尽力解释我的问题。目前我有一个字典(名为level_map),其中包含键和值(值是键应该存储的级别)

例:

名称:测试 价值:1

名称:Test2 价值:2

名称:Test3 价值:3

名称:Test4 价值:3

应该是这样的

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'}
。对此感到抱歉。我在我的帖子中添加了一个编辑。谢谢!感谢你的回答。