I wanted to ask this here because what I wanted to originally do felt like a really Pythonic method. I want to be able to use the syntax:

    d = {'a':{'c':4},'b':2}
    with d['a'] as item:
        print(item['c'])

but found that Python doesn't allow for using lists, dicts, etc. as context managers.

So I implemented my own:

    def context_wrap(target):
        class ContextWrap:
            def __init__(self, tgt):
                self._tgt = tgt
    
            def __enter__(self):
                return self._tgt
    
            def __exit__(self, type, value, traceback):
                pass
    
        return ContextWrap(target)
    
    if __name__ == '__main__':
        with context_wrap({'a':1}) as item:
            print(item['a'])
    
        with context_wrap([1,2,3,4,5]) as item:
            print(item[1])
    
        with context_wrap(3) as item:
            print (item)

but I wanted to know if there was a more "Pythonic" way to do it. So the improvement that I'm looking for is in terms of better reliance on the standard Python library and/or in terms of my syntax.