Вот упрощенная структура данных, с которой я работаю:
Код: Выделить всё
data = {
"name": "John",
"contacts": [
{
"type": "email",
"value": "john@example.com",
},
{
"type": "phone",
"value": [
{
"country": "US",
"number": "123-456-7890"
},
{
"country": "UK",
"number": "987-654-3210"
}
]
}
],
"address": {
"city": "New York",
"postal_code": "10001",
"coordinates": [
{
"lat": 40.7128,
"lon": -74.0060
}
]
}
}
Код: Выделить всё
["John", "email", "john@example.com", "phone", "123-456-7890", "US", "987-654-3210", "UK", "New York", "10001", 40.7128, -74.0060]
Код: Выделить всё
def flatten(data):
flat_list = []
if isinstance(data, dict):
for key, value in data.items():
flat_list.extend(flatten(value))
elif isinstance(data, list):
for item in data:
flat_list.extend(flatten(item))
else:
flat_list.append(data)
return flat_list
flattened_data = flatten(data)
print(flattened_data)
[*]Увеличение предела рекурсии с помощью sys.setrecursionlimit(), но это помогает лишь незначительно и не полностью адрес производительности проблемы.
[*]Оптимизация рекурсивной функции путем преобразования ее в итеративный подход, но я не уверен, как управлять рекурсией вручную для глубоко вложенных структур.
< /ul>
Вопросы:
- Как я могу улучшить рекурсию или провести рефакторинг этого кода для эффективной обработки более глубоких структур? >
- Есть ли итерация способ сгладить эту структуру данных, не сталкиваясь с ограничениями глубины рекурсии?
- Существуют ли какие-либо известные библиотеки или шаблоны, которые могут более эффективно обрабатывать очень глубокие и сложные структуры данных, подобные этой
Подробнее здесь: https://stackoverflow.com/questions/793 ... ssues-with