This worked for me (using FStrings as keys):
bool RenameItem(FString OldKey, FString NewKey)
{
if (!Items.Contains(OldKey) || Items.Contains(NewKey))
return false;
auto v = Items[OldKey]]; // Store the current value
Items.Remove(OldKey); // Get rid of the old key (and it's value)
Items.Shrink();
Items.Add(NewKey, v); // Re-add the stored value using the new key
return true;
}