Перебирать вложенные списки и словари

Мне нужно перебрать вложенные списки и словари и заменить каждое целое число через шестнадцатеричную строку. Такой элемент может выглядеть, например, так:

element = {'Request': [16, 2], 'Params': ['Typetext', [16, 2], 2], 'Service': 'Servicetext', 'Responses': [{'State': 'Positive', 'PDU': [80, 2, 0]}, {}]}

После применения функции она должна выглядеть так:

element = {'Request': ['0x10', '0x02'], 'Params': ['Typetext', ['0x10', '0x02'], '0x02'], 'Service': 'Servicetext', 'Responses': [{'State': 'Positive', 'PDU': ['0x50', '0x02', '0x00']}, {}]}

Я уже нашел функцию для итерации по таким вложенным итерацииhttp://code.activestate.com/recipes/577982-recursively-walk-python-objects/, Адаптированная к Python 2.5 эта функция выглядит так:

string_types = (str, unicode)
iteritems = lambda mapping: getattr(mapping, 'iteritems', mapping.items)()

def objwalk(obj, path=(), memo=None):
    if memo is None:
        memo = set()
    iterator = None
    if isinstance(obj, dict):
        iterator = iteritems
    elif isinstance(obj, (list, set)) and not isinstance(obj, string_types):
        iterator = enumerate
    if iterator:
        if id(obj) not in memo:
            memo.add(id(obj))
            for path_component, value in iterator(obj):
                for result in objwalk(value, path + (path_component,), memo):
                    yield result
            memo.remove(id(obj))
    else:
        yield path, obj

Но проблема этой функции в том, что она возвращает элементы кортежа. И они не могут быть отредактированы. Можете ли вы помочь мне реализовать нужную мне функцию?

С наилучшими пожеланиями Wewa