首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >遍历嵌套字典并获取Python中的路径?

遍历嵌套字典并获取Python中的路径?
EN

Stack Overflow用户
提问于 2012-08-13 15:31:49
回答 2查看 7.3K关注 0票数 4

我有一本字典,比如:

代码语言:javascript
运行
复制
{
   "checksum": "b884cbfb1a6697fa9b9eea9cb2054183",
   "roots": {
      "bookmark_bar": {
         "children": [ {
            "date_added": "12989159740428363",
            "id": "4",
            "name": "test2",
            "type": "url",
            "url": "chrome://bookmarks/#1"
         } ],
         "date_added": "12989159700896551",
         "date_modified": "12989159740428363",
         "id": "1",
         "name": "bookmark_bar",
         "type": "folder"
      },
      "other": {
         "children": [ {
            "date_added": "12989159740428363",
            "id": "4",
            "name": "test",
            "type": "url",
            "url": "chrome://bookmarks/#1"
         } ],
         "date_added": "12989159700896557",
         "date_modified": "0",
         "id": "2",
         "name": "aaa",
         "type": "folder"
      },
      "synced": {
         "children": [  ],
         "date_added": "12989159700896558",
         "date_modified": "0",
         "id": "3",
         "name": "bbb",
         "type": "folder"
      }
   },
   "version": 1
}

一切都从“根”开始,它们有两种类型的数据: URL和文件夹,它们是字典。如果它是一个文件夹,它必须有关键字‘孩子’,关键字的值是一个列表,我们可以在其中放置更多的URL和文件夹。

现在我想遍历这个嵌套的字典,以获取所有子文件夹中的URL,所以我编写了一个函数:

代码语言:javascript
运行
复制
def traverse(dic):
    for i in dic:
        if i['type'] == 'folder':
            for j in traverse(i['children']):
                yield j
        elif i['type'] == 'url':
            yield i

我可以这样使用它:

代码语言:javascript
运行
复制
traverse(dictionary['roots']['bookmark_bar']['children'])

它工作得很完美。但它只是生成一个URL的字典,我不知道它在哪里。我也想知道路径。我该怎么做呢?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11929904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档