使用列表中的字符串动态创建嵌套字典

时间:2019-12-09 04:47:45

标签: python json dictionary nested

我想基于现有数组创建嵌套字典(== javascript对象)。

例如:

input_array =["hello", "how", "are", "you", "?"]
output_object = 
  { "hello":
    { "how":
      { "are":
        { "you":
          { "?": {}
          }
        }
      }
    }
  }

在JavaScript中,解决方案类似于:

for( var i = 0; i < input_array.length; i++ ) {
   output_object[ input_array[i] ] = {};
   output_object = output_object[ input_array[i] ]
};

3 个答案:

答案 0 :(得分:4)

非常相似:

d = d2 = {}
for i in input_array:
     d2[i] = {}
     d2 = d2[i]

d
# {'hello': {'how': {'are': {'you': {'?': {}}}}}}

答案 1 :(得分:3)

您可以使用递归:

input_array =["hello", "how", "are", "you", "?"]
def to_dict(d):
  return {d[0]:{} if not d[1:] else to_dict(d[1:])}

output_object = to_dict(input_array)

输出:

{'hello': {'how': {'are': {'you': {'?': {}}}}}}

答案 2 :(得分:1)

使用递归函数:

>>> def custom_json(array):
    if not array:
        return {}
    else:
        key = array.pop(0)
        return {key : custom_json(array)}

输出:

>>> input_array =["hello", "how", "are", "you", "?"]
>>> custom_json(input_array)
{'hello': {'how': {'are': {'you': {'?': {}}}}}}