https://blog.niranjrajasekaran.com/python/data-structures-in-python/