내가 같은 사전이 있습니다중첩 된 사전을 탐색하고 파이썬에서 경로를 얻으시겠습니까?
{
"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 사전을 생성하기 만하면 어디 있는지 알 수 없습니다. 나는 길을 가고 싶다. 내가 어떻게 해? 난 당신이 원하는 것을 얻으면
idention을 사용하여 사전을 포맷 해 주실 수 있습니까? 그리고 귀하의 질문을 이해할 필요가없는 모든 것을 제발 제거 할 수 있습니까? –
사전을 읽을 수 있습니다. –
예상 출력은 무엇입니까 – Rakesh