Solution
This uses collections.OrderedDict.
Short Answer
You could use the following functions and use OrderedDict.
from collections import OrderedDict
d = {34: "martsz", 79: "David", "": "Kathy", 63: "Daniel"}
d = OrderedDict(**d)
get_sorted_dict(d, target_key='')
Output:  
OrderedDict([('34', 'martsz'),
             ('63', 'Daniel'),
             ('', 'Kathy'),
             ('79', 'David')])
Long Answer
This includes the custom functions.
from collections import OrderedDict
def get_sorted_keys(keys, target_key='') -> list:
    """Returns a list of sorted keys with 
       index of target_key kept unchanged.
    """
    keys = [str(k) for k in keys]
    sorted_keys = sorted(keys)
    sorted_keys.pop(sorted_keys.index(''))
    target_key_index = keys.index(target_key)
    sorted_keys.insert(target_key_index, target_key)
    return sorted_keys
def get_sorted_dict(d:dict, target_key='') -> OrderedDict:
    """Returns a dictionary sorted by the keys, while 
       keeping the index of the target_key unchanged.
    """
    sorted_keys = get_sorted_keys(keys = d.keys(), 
                                  target_key = target_key)
    sorted_dict = OrderedDict()
    for k in sorted_keys:
        temp = {k: d.get(int(k))} if not (k==target_key) else {k: d.get(k)}        
        sorted_dict.update(temp.copy())
    return sorted_dict  
##----------------- Implementation ------------------
d = {34: "martsz", 79: "David", "": "Kathy", 63: "Daniel"}
d = OrderedDict(**d)
get_sorted_dict(d, target_key='')