References:
        http://stackoverflow.com/questions/1331471/in-memory-size-of-python-stucture

    CommandLine:
        python -m utool.util_resources --test-get_python_datastructure_sizes

    Example:
        >>> # ENABLE_DOCTEST
        >>> from utool.util_resources import *  # NOQA
        >>> import utool as ut  # NOQA
        >>> type_sizes = get_python_datastructure_sizes()
        >>> result = ut.repr4(type_sizes, sorted_=True)
        >>> print(result)

def get_python_datastructure_sizes():
    """
    References:
        http://stackoverflow.com/questions/1331471/in-memory-size-of-python-stucture

    CommandLine:
        python -m utool.util_resources --test-get_python_datastructure_sizes

    Example:
        >>> # ENABLE_DOCTEST
        >>> from utool.util_resources import *  # NOQA
        >>> import utool as ut  # NOQA
        >>> type_sizes = get_python_datastructure_sizes()
        >>> result = ut.repr4(type_sizes, sorted_=True)
        >>> print(result)
    """
    import sys
    import decimal
    import six

    empty_types = {
        'int'     : 0,
        'float'   : 0.0,
        'dict'    : dict(),
        'set'     : set(),
        'tuple'   : tuple(),
        'list'    : list(),
        'str'     : '',
        'unicode' : u'',
        'decimal' : decimal.Decimal(0),
        'object'  : object(),
    }
    type_sizes = {key: sys.getsizeof(val)
                  for key, val in six.iteritems(empty_types)}
    return type_sizes