Custom colors based off categorical values in dict

I have a column of people’s names (categorical/discrete data). I have a dict of each unique name and the color assigned to that person. There is no relationship between the names, so technically a color ramp isn’t needed.
When I try to use matplotlib (in geopandas), I can’t get the correct colors to match up with the correct names.
I’ve tried to create a custom cmap:
person_palette = {‘Marlborough’: ‘blue’, ‘Eugene of Savoy’ : ‘green’,‘Villars’: ‘pink’, ‘Stanhope’: ‘red’,}
cmap = colors.ListedColormap([person_palette[p] for p in gdf[‘person’].unique()])

But I can’t figure out how to get the correct colors assigned to the correct people:
base = europe.plot(color=‘white’, edgecolor=‘lightgray’,figsize=(12,12)) #loaded basemap shp
gdf.plot(ax=base,marker=‘.’,markersize=20,column=‘person’,cmap=cmap,legend=True);
The cmap colors display, but not with the correct people: I can’t get Marlborough to be blue, Eugene to be green…
It seems the connection between the dict keys and values isn’t preserved. I’ve tried variations with color, c, and cmap, with the person column and the person_palette, but to no avail. I tried this solution and it didn’t work: https://stackoverflow.com/questions/69891416/how-do-i-assign-custom-colors-to-values-as-points-using-geopandas