我是Python新手,目前正在尝试阅读以下JSON:
<?php
$date = date('M d, Y H:i:s', strtotime('19-6-2018 15:00:00'));
$date1 = date('M d, Y H:i:s', strtotime('8-3-2019 15:37:25'));
echo json_encode(
array(
'first' => $date,
'second' => $date1
)
);
然后将它放在字典中(现在完成),最后将其显示为嵌套和展平(我使用Python 3.6)。我希望通过递归来避免使用第三方库。我尝试了StackOverflow的所有建议,但不能使结果看起来像任务中的那个:
"level1_key1":"1",
"level1_key2":{
"level2_key1":"2",
"level2_key2":{
"level3_key1":"Max depth"
}
}
我非常感谢任何帮助。提前谢谢!
答案 0 :(得分:0)
请尝试以下代码。它应该解决你的问题。
example_dict = {"level1_key1":"1",
"level1_key2":{
"level2_key1":"2",
"level2_key2":{
"level3_key1":"Max depth"
}
}
}
flatten_dict = {}
def process_dict(dict_val):
for key, val in dict_val.items():
if isinstance(val, dict) and val:
process_dict(val)
else:
flatten_dict.update({key:val})
return flatten_dict
print process_dict(example_dict)
答案:
{&#39; level2_key1&#39;:&#39; 2&#39;,&#39; level3_key1&#39;:&#39;最大深度&#39;,&#39; level1_key1&#39;: &#39; 1&#39;}
答案 1 :(得分:0)
您可以在递归中使用dict.items
:
d = {u'level1_key2': {u'level2_key2': {u'level3_key1': u'Max depth'}, u'level2_key1': u'2'}, u'level1_key1': u'1'}
def flatten(d):
_r = [[(a, b)] if not isinstance(b, dict) else flatten(b) for a, b in d.items()]
return [i for b in _r for i in b]
new_d = dict(flatten(d))
输出:
{'level3_key1': 'Max depth', 'level2_key1': '2', 'level1_key1': '1'}