Issue with ;pathing

All I’m attempting to make is a keybind system where you can simply change your keybinds, but that is not working as intended.

When I attempt to make the path will be shown below

it becomes its own variable, I don’t want to have to make 13 different if statements just to make a Set Data function.

Set Remote and Function

local function Set(Player, Path, Type, Value)
	local Data = GetData(Player)
	print(Path)
	print(Data[Path])
	Data[Path] = Value
	Save(Player, false)
	local Info = {
	 	Info = print(Type, "=", Value)
	}
	return Info
end

Remotes.SetData.OnInvoke = function(Player, Path, Type, Value)
	local PlayerReturnedData = Set(Player, Path, Type, Value)
	return PlayerReturnedData
end

*** Test Line of Code ***

if Player.Name == "Rymxi" then
			local Changed = SetData:Invoke(Player, "ClientSettings.Keybinds.Computer.Combat.Basic.Sprint", "Sprint", "Enum.KeyCode.Z.Name")
			task.wait(3)
			print(Changed)
			DataChanged:FireClient(Player)
			print(GetData:Invoke(Player).ClientSettings.Keybinds.Computer.Combat.Basic.Sprint)
		end

*** What ends up happening ***

["BanData"] =  ▶ {...},
                    ["ClientSettings"] =  ▶ {...},
                    ["ClientSettings.Keybinds.Computer.Combat.Basic.Sprint"] = "Enum.KeyCode.Z.Name",
                    ["Gamepasses"] = {},
                    ["Inventory"] =  ▶ {...},
                    ["LastJoin"] = 1726973325,
                    ["Money"] = 0,
                    ["Moves"] =  ▶ {...},
                    ["Multipliers"] =  ▶ {...},
                    ["PlayTime"] = 0,
                    ["Reputation"] = 0