How to change shapekey vertex position through python
Shape key coordinates live in a bmesh "layer"

I have included a copy of http://web.purplefrog.com/~thoth/blender/python-cookbook/explore-shape-keys.html here:

import bpy
import bmesh

def dump(mesh):

    bm = bmesh.new()
    bm.from_mesh(mesh)

    for key in bm.verts.layers.shape.keys():
        val = bm.verts.layers.shape.get(key)
        print("%s = %s" % (key,val) )
        sk=mesh.shape_keys.key_blocks[key]
        print("v=%f, f=%f" % ( sk.value, sk.frame))
        for i in range(len(bm.verts)):
            v = bm.verts[i]
            delta = v[val] - v.co
            if (delta.length &gt; 0):
                print ( "v[%d]+%s" % ( i,delta) )

dump(bpy.context.active_object.data)


Code for creating and populating shape keys can be found at http://web.purplefrog.com/~thoth/blender/python-cookbook/shape-key-fin.html and I have extracted the most interesting bit here:

def addShapeKey(obj, i, nKeys, z1, z2, dTheta, thetaLag):
    kn = "phase %d"%i
    sk = obj.shape_key_add(kn)
    bm = bmesh.new()
    bm.from_mesh(obj.data)
    sl = bm.verts.layers.shape.get(kn)


    for u in range( math.floor(len(bm.verts) / 3)):
        t = math.pi*2*i/nKeys
        bm.verts[u*3][sl] = vert1For(u, t)
        bm.verts[u*3+1][sl] = vert2For(u, t, dTheta, z1)
        bm.verts[u*3+2][sl] = vert3For(u, t, dTheta, z2, thetaLag)

    bm.to_mesh(obj.data)