HACKER Q&A
📣 wheelerof4te

Is Python's dict key-sharing exclusive to class instance variables?


Modern Python versions (3.6+) have a memory performance optimization for dictionaries, where dict keys are shared between various class instances.

I am asking if plain Python's dictionaries have the same optimization?

Given the two dicts with shared keys: d1 = {"name": "Havoc", "hand": "left"} d2 = {"name": "Malice", "hand": "right"}

Are "name" and "hand" shared between these two or does each one have a separate key inside Python's memory pool?

EDIT:

No, the keys of normal dictionaries are not shared. As outlined in the PEP 412, only internal dictionaries of class instances share their keys:

https://www.python.org/dev/peps/pep-0412/

Good for OOP in Python, I guess.


  👤 yokaze Accepted Answer ✓
Not sure if your example is considered to be complete, but AFAIK, static strings with the same content are the same instance. I'm side stepping your question in a way, but you can validate that easily with the "is" keyword.

  for k1,k2 in itertools.zip_longest(d1, d2):
    print(k1 is k2)