def rekey(dikt):
    for k in dikt.keys():
        if isinstance(k, str):
            ik=fk=None
            try:
                ik = int(k)
            except ValueError:
                try:
                    fk = float(k)
                except ValueError:
                    continue
            if ik is not None:
                nk = ik
            else:
                nk = fk
            if nk in dikt:
                raise KeyError("already have key %r"%nk)
            dikt[nk] = dikt.pop(k)
    return dikt
Rekey a dict that has been forced to use str keys where there should be
dataset/ETHPy150Open ipython/ipython-py3k/IPython/utils/jsonutil.py/rekey