Python Merge keys in a nested dictionary producing a new dictionary

I have the following dictionary as an input... Input:

d = {'Report': {'Control': {'Title': 'i_prefecture', 'DateTime': '2016-11-
01T07:43:26Z', 'Status': 'Live', 'EditorialOffice': 'oimori_office', 
'PublishingOffice': 'oimori_office'}, 'Head': {'Title': 'oimori_prefecture', 
'ReportDateTime': '2016-11-01T17:00:00+09:00', 'TargetDateTime': '2016-11-
01T17:00:00+09:00', 'TargetDuration': 'P2DT7H', 'EventID': None, 'InfoType': 
'forecast', 'Serial': None, 'InfoKind': 'Northern_Info', 'InfoKindVersion': 
'1.0_0', 'Headline': {'Text': None}}, 'Body': {'MeteorologicalInfos': 
[{'TimeSeriesInfo': [{'TimeDefines': {'TimeDefine': [{'DateTime': '2016-11-
01T17:00:00+09:00', 'Duration': 'PT7H', 'Name': 'Morn', 'timeId': '1'}, 
{'DateTime': '2016-11-02T00:00:00+09:00', 'Duration': 'P1D', 'Name': 
'tomorrow', 'timeId': '2'}, {'DateTime': '2016-11-03T00:00:00+09:00', 
'Duration': 'P1D', 'Name': 'tom_night', 'timeId': '3'}]}}}}}}

I want to merge or concatenate the keys such that the parent keys are referenced to the child keys to avoid duplicates in the dictionary.

Output:

{'Report': 
{'Report_Control': 
                 {'Report_Control_Title': 'i_prefecture', 
                  'Report_Control_DateTime': '2016-11-01T07:43:26Z', 
                  'Report_Control_Status': 'Live', 
                  'Report_Control_EditorialOffice': 'oimori_office', 
                  'Report_Control_PublishingOffice': 'oimori_office'}, 
'Report_Head': 
                 {'Report_Head_Title': 'oimori_prefecture', 
                  'Report_Head_ReportDateTime': '2016-11-01T17:00:00+09:00',
                  'Report_Head_TargetDateTime': '2016-11-01T17:00:00+09:00', 
                  'Report_Head_TargetDuration': 'P2DT7H', 
                  'Report_Head_EventID': None,
                  'Report_Head_InfoType':'forecast',
                  'Report_Head_Serial': None, 
                  'Report_Head_InfoKind': 'Northern_Info',
                  'Report_Head_InfoKindVersion':'1.0_0',
                  'Report_Head_Headline': 
                                        {'Report_Head_Text':None}}, 
'Report_Body': 
                 {'Report_Body_MeteorologicalInfos': 
                          [{'Report_Body_TimeSeriesInfo': [{'Report_Body_TimeDefines':{'Report_Body_TimeDefine':
                                                             [{'Report_Body_DateTime': '2016-11-01T17:00:00+09:00', 
                                                               'Report_Body_Duration': 'PT7H', 
                                                               'Report_Body_Name': 'Morn', 
                                                               'Report_Body_timeId': '1'}, 
                                                              {'Report_Body_DateTime': '2016-11-02T00:00:00+09:00',
                                                               'Report_Body_Duration': 'P1D',
                                                               'Report_Body_Name':'tomorrow', 
                                                               'Report_Body_timeId': '2'}, 
                                                              {'Report_Body_DateTime': '2016-11-03T00:00:00+09:00',
                                                               'Report_Body_Duration': 'P1D',
                                                               'Report_Body_Name': 'tom_night',
                                                               'Report_Body_timeId': '3'}]}}}}}}

I currently have the following function trying to achieve this task but it does not merge the keys... Could someone please help me achieve this task?

My current code appends the keys to a list and but it repeats the same concatenation over and over... I want to use this list with concatenated keys to replace the current keys in the dictionary (But I don't know how to do it). Can someone please help!

new_dict = {}
def merge_related_keys(dictionary, parent = ""):
    for key in list(dictionary):
        initial_dot = "" if parent == "" else "_"
        if type(dictionary[key]) == dict:
            merged_keys.extend(merge_related_keys(dictionary[key], initial_dot.join((parent, key))))
        else:
            merged_keys.extend([initial_dot.join((parent, key))])
    return merged_keys