in python, you can create a class that redefines __getitem__, __setitem__ and __delitem__.
data["B4"] = data.__getitem__("B4") data["B4"] = 12 -> data.__setitem__("B4", 12) del data["B4"] -> data.__delitem__("B4")
and instead of data[i][j] you could use data[i, j], or just let data [n] (n in N) return another object that overrides __getitem__, __setitem__ and __delitem__ for the specific row. concurrency problems may arise. anyway, kudos for the work!
ciao,
domenico