Vertices with no loops
Bmesh script to remove verts not linked to any faces
import bpy
import bmesh
from bpy import context

ob = context.object 
me = ob.data
# clean all verts not connected to faces
bm = bmesh.new()
bm.from_mesh(me)
bmesh.ops.delete(
    bm,
    geom=[v for v in bm.verts if not v.link_faces],
    context='VERTS', # default
    )
bm.to_mesh(me)

Re your question method
At issue with the question method is that the same vert can be a member of many loops. Only that of the vertex in last loop will be assigned to your list.
Find with one to many relationships like this that the defaultdict class from collections when created with a list gives any key a default value of list() or [] which can be appended to.
import bpy
from collections import defaultdict

def get_custom_vertex_normals(me):
    me.calc_normals_split()
    loop_norms = defaultdict(list)

    for loop in me.loops:
        loop_norms[loop.vertex_index].append(loop.normal)
    return loop_norms

ob = bpy.context.object
loop_norms = get_custom_vertex_normals(ob.data)
for i, normals in loop_norms.items():
        print(i, [tuple(round(x, 4) for x in v)  for v in normals])

when run on default cube, outputs:
0 [(0.0, 0.0, -1.0), (1.0, -0.0, 0.0), (0.0, 1.0, 0.0)]
1 [(0.0, 0.0, -1.0), (1.0, -0.0, 0.0), (-0.0, -1.0, -0.0)]
2 [(0.0, 0.0, -1.0), (-0.0, -1.0, -0.0), (-1.0, 0.0, -0.0)]
3 [(0.0, 0.0, -1.0), (-1.0, 0.0, -0.0), (0.0, 1.0, 0.0)]
4 [(0.0, 0.0, 1.0), (1.0, -0.0, 0.0), (0.0, 1.0, 0.0)]
7 [(0.0, 0.0, 1.0), (-1.0, 0.0, -0.0), (0.0, 1.0, 0.0)]
6 [(0.0, 0.0, 1.0), (-0.0, -1.0, -0.0), (-1.0, 0.0, -0.0)]
5 [(0.0, 0.0, 1.0), (1.0, -0.0, 0.0), (-0.0, -1.0, -0.0)]

ie every vert has 3 loops for each face it belongs.
The average normal could be calculated via
avge_normal = sum(normals, Vector()) / len(normals)

or
avge_normal = sum(normals, Vector()).normalized()

to get a normalized sum vector. which when run on default cube edited into above
for i, normals in loop_norms.items():
    print(i, sum(normals, Vector()).normalized())

outputs
0 &lt;Vector (0.5774, 0.5774, -0.5774)&gt;
1 &lt;Vector (0.5774, -0.5774, -0.5774)&gt;
2 &lt;Vector (-0.5774, -0.5774, -0.5774)&gt;
3 &lt;Vector (-0.5774, 0.5774, -0.5774)&gt;
4 &lt;Vector (0.5774, 0.5774, 0.5774)&gt;
7 &lt;Vector (-0.5774, 0.5774, 0.5774)&gt;
6 &lt;Vector (-0.5774, -0.5774, 0.5774)&gt;
5 &lt;Vector (0.5774, -0.5774, 0.5774)&gt;

which could be more like the result you are after.