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.