Python dictionaries#

Everything (most things) in python is built around a dictionary.

A class is a dict

from requests import Session

session = Session()
session.headers.update({'token': 'tabalubbahuptaga'})

To get the dictionary representation you can use var():

>>> vars(session)
{'headers': {'User-Agent': 'python-requests/2.21.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'token': 'tabalubbahuptaga'},
'auth': None,
'proxies': {},
'hooks': {'response': []},
'params': {},
'stream': False,
'verify': True,
'cert': None,
'max_redirects': 30,
'trust_env': True,
'cookies': <RequestsCookieJar[]>,
'adapters': OrderedDict([('https://',
            <requests.adapters.HTTPAdapter at 0x10ed56b00>),
            ('http://', <requests.adapters.HTTPAdapter at 0x10ee1d518>)])}

It returns the same content as session.__dict__

In python 2.7 dictionaries were big. The order is scrambled but deterministic…every python3.7 will return the same order.

In python 3.5 the key sharing dictionary was introduced, where dictionaries that shared keys were not duplicated. Each time python started the hash changes and dict keys are randomized

In python 3.6 dictionaries got compacted and are now ordered.