Python получает запись dict, содержащую определенное полеPython

Программы на Python
Ответить
Anonymous
 Python получает запись dict, содержащую определенное поле

Сообщение Anonymous »

У меня есть вложенный словарь в Python, содержащий структуры YAML, например

Код: Выделить всё

  - id: left_time
type: u2
doc: Time left
и я хочу получить пары типа {id: doc}. В этом примере я хочу, чтобы это было: {"left_time": "Осталось времени"}. Проблема в том, что мне нужно пройти через них рекурсивно.
Моя попытка

Код: Выделить всё

def get_dict_recursively(search_dict, field):
fields_found = []

name = ""

for key, value in search_dict.items():

if key == "id":
name = value

if key == field:
fields_found.append({name: value})

elif isinstance(value, dict):
results = get_dict_recursively(value, field)
for result in results:
fields_found.append({name: result})

elif isinstance(value, list):
for item in value:
if isinstance(item, dict):
more_results = get_dict_recursively(item, field)
for another_result in more_results:
fields_found.append({name: another_result})

return fields_found
назовем это так

Код: Выделить всё

get_dict_recursively(dict, "doc")
где

Код: Выделить всё

dict = {
meta:
id: foo
title: Foo
types:
data:
seq:
- id: left_time
type: u2
doc: Time left
gps:
seq:
- id: gps_st
type: b2
- id: sats
type: b6
doc: Number of satellites
}
Есть ошибка, но я не могу ее найти.

Подробнее здесь: https://stackoverflow.com/questions/476 ... tain-field
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»