I\'m making a chess engine and for my piece square tables i can use lists or dictionaries. As the implementation of the piece square tables made the engine two times slower,
You can easily benchmark this with the timeit module (python -m timeit -S "setup" -- "statement"
). But in this case, I can tell you dictionaries won't beat lists, because list lookup is trivial in comparison to dict lookup. Both will be fast, independent from the key and the number of items in the collection, but list will win on micro benchmarks. Of course, this shouldn't rule your decision. Go for clarity, optimize algorithms instead of insignificant details, premature optimization, etc. ad nauseam.
But I'd still say a list is more appropriate, both semantically (you don't have a free-form mapping, you have a sequence), and for preventing errors (by rejecting out of range and non-integer indices).