import collections
some_dict = {
'default' : {
'heading' : 'Here’s A Title' ,
'learn_more' : {
'title' : 'Title of Thing' ,
'url' : 'www.url.com' ,
'description' : 'description' ,
'opens_new_window' : 'true'
}
}
}
def flatten( d, parent_key= '' , sep= '_' ) :
items = [ ]
for k, v in d.items ( ) :
new_key = parent_key + sep + k if parent_key else k
if isinstance ( v, collections .MutableMapping ) :
items.extend ( flatten( v, new_key, sep= sep) .items ( ) )
else :
items.append ( ( new_key, v) )
return dict ( items)
results = flatten( some_dict, parent_key= '' , sep= '.' )
for item in results:
print ( item + ': ' + results[ item] )
aW1wb3J0IGNvbGxlY3Rpb25zCgpzb21lX2RpY3QgPSB7CgknZGVmYXVsdCc6IHsKCSAgICAnaGVhZGluZyc6ICdIZXJl4oCZcyBBIFRpdGxlJywKCSAgICAnbGVhcm5fbW9yZSc6IHsKCSAgICAJJ3RpdGxlJzogJ1RpdGxlIG9mIFRoaW5nJywKCSAgICAgICAgJ3VybCc6ICd3d3cudXJsLmNvbScsCgkgICAgICAgICdkZXNjcmlwdGlvbic6ICdkZXNjcmlwdGlvbicsCgkgICAgICAgICdvcGVuc19uZXdfd2luZG93JzogJ3RydWUnCiAgICAgICAgfQoJfQp9CgpkZWYgZmxhdHRlbihkLCBwYXJlbnRfa2V5PScnLCBzZXA9J18nKToKICAgIGl0ZW1zID0gW10KICAgIGZvciBrLCB2IGluIGQuaXRlbXMoKToKICAgICAgICBuZXdfa2V5ID0gcGFyZW50X2tleSArIHNlcCArIGsgaWYgcGFyZW50X2tleSBlbHNlIGsKICAgICAgICBpZiBpc2luc3RhbmNlKHYsIGNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nKToKICAgICAgICAgICAgaXRlbXMuZXh0ZW5kKGZsYXR0ZW4odiwgbmV3X2tleSwgc2VwPXNlcCkuaXRlbXMoKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBpdGVtcy5hcHBlbmQoKG5ld19rZXksIHYpKQogICAgcmV0dXJuIGRpY3QoaXRlbXMpCgpyZXN1bHRzID0gZmxhdHRlbihzb21lX2RpY3QsIHBhcmVudF9rZXk9JycsIHNlcD0nLicpCmZvciBpdGVtIGluIHJlc3VsdHM6CglwcmludChpdGVtICsgJzogJyArIHJlc3VsdHNbaXRlbV0p