我想获得一个可能的结构,其中包含数据库中单个字段的所有可能的键,该键以JSON(dict)格式存储。我的任务中的结构非常重要,因此不适合将其存储在列表中。嵌套的级别可以超过两个。
此示例:
dicts = {'a':1, 'b':2, 'c':{'in_c1': 2}}, \
{'a':1, 'd':2, 'c':{'dict_in_c2': {'v': 2}}},\
{'e':57}
应返回:
{'a': 1, 'b':2, 'c': {'in_c1': 2, 'dict_in_c2': {'v': 2}}, 'd': 2, 'e': 57}
文本(键的值)对我而言并不重要,最好将其替换为诸如none或空字符串之类的东西。 我该怎么做?
答案 0 :(得分:1)
这可能无法处理所有情况,但涵盖了一些基本情况。 我假设
a
和b
)的键将没有任何字典值。
键(例如c
)将没有任何非字典值。同样,仅在第一级对字典的键执行了展平,而在嵌套级上未执行。
这是代码:
dicts = {'a':1, 'b':2, 'c':{'in_c1': 2}}, \
{'a':1, 'd':2, 'c':{'dict_in_c2': {'v': 2}}},\
{'e':57}
result = dict()
for dictionary in dicts:
for key, value in dictionary.items():
if not isinstance(value,dict):
result[key] = value
continue
if not result.get(key, None):
result[key] = dict()
for k, v in value.items():
result[key][k] = v
print(result)
结果-
{'b': 2, 'a': 1, 'c': {'dict_in_c2': {'v': 2}, 'in_c1': 2}, 'e': 57, 'd': 2}