Я хотел бы получить вложенный словарь из строки, которая может быть разделена разделителем, :
.
s='A:B:C:D'
v=['some','object']
desired={'A':{'B':{'C':{'D':v}}}}
Есть ли "питонический" способ создать это?
-2
kdb
25 Янв 2021 в 22:08
2 ответа
Лучший ответ
Для этого вы можете написать рекурсивную функцию:
>>> s = 'A:B:C:D'
>>> v = ['some','object']
>>> def generate_dict(keys, val):
... if len(keys) == 1:
... return {keys[0]: val}
... return {keys[0]:generate_dict(keys[1:], val)}
...
>>> generate_dict(s.split(':'), v)
{'A': {'B': {'C': {'D': ['some', 'object']}}}}
1
Asocia
25 Янв 2021 в 19:17
Вот итеративное решение:
result = {}
s = 'A:B:C:D'
delimiter = ":"
value = ['some', 'object']
temp = result
key_list = s.split(delimiter)
for i, key in enumerate(key_list):
if i != len(key_list) - 1:
temp[key] = {}
temp = temp[key]
continue
temp[key] = value
print(result)
1
dukkee
25 Янв 2021 в 19:19
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.