To set a value map widget with values loaded manually, you can just do something like:
#QgsVectorLayer object
vl = iface.activeLayer()
# Get field index
fld_idx = vl.fields().lookupField('fuzzylinefeaturetype')
# define value map
v_map = {'map': [{'Beach': '2'}, {'DuneLike': '3'}, {'GeneralLocality': '5'}, {'RangeLike': '13'}, {'ValleyLike': '18'}]}
# Set editor widget setup to layer, passing in field index & widget setup
vl.setEditorWidgetSetup(fld_idx, QgsEditorWidgetSetup('ValueMap', v_map))
To load the values from a csv, I think the easiest solution is just to write a simple function like below:
import csv
path = '/path/to/your/field_map.csv'
def loadValueMapFromCsv(fpath):
v_map = {}
entries = []
with open(fpath, newline='') as mapfile:
reader = csv.reader(mapfile, delimiter=',')
for row in reader:
entries.append({row[1]: row[0]})
v_map['map'] = entries
return v_map
#print(loadValueMapFromCsv(path))
vl = iface.activeLayer()
fld_idx = vl.fields().lookupField('fuzzylinefeaturetype')
v_map = loadValueMapFromCsv(path)
vl.setEditorWidgetSetup(fld_idx, QgsEditorWidgetSetup('ValueMap', v_map))
Results on a test layer:
Example of csv file:

Attribute form dialog after running code in Python console:

The method in the source code which parses a csv file is: QgsValueMapConfigDlg::loadMapFromCSV
There are also useful references in the Python test for QgsAttributeForm.
By the way, to find the correct structure/syntax for the value map, I set it up manually then ran:
vl = iface.activeLayer()
fld_idx = vl.fields().lookupField('Name')
print(vl.editorWidgetSetup(fld_idx).config())