Обходить вложенный словарь и получить путь в Python?
У меня есть словарь, как:
{
"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 и папка, они словари. Если это папка, у нее должен быть ключ 'children', значение ключа - это список, в него можно добавить больше URL-адресов и папок.
Теперь я хочу просмотреть этот вложенный словарь, чтобы получить URL-адрес во всех подпапках, поэтому я написал функцию:
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
и я могу использовать это так:
traverse(dictionary['roots']['bookmark_bar']['children'])
Работает отлично. Но он просто генерирует словарь URL, я не знаю, где он. Я тоже хочу проложить путь. Как мне это сделать?