BUG: Different behavior of .replace() method between pandas version 1.0.5 and 1.1.2
- [x] I have checked that this issue has not already been reported.

- [x] I have confirmed this bug exists on the latest version of pandas.

- [ ] (optional) I have confirmed this bug exists on the master branch of pandas.

---

**Note**: Please read [this guide](https://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports) detailing how to provide the necessary information for us to reproduce your bug.

#### Code Sample, a copy-pastable example

```python
import pandas as pd

o1 = object()
o2 = object()
o3 = object()

df = pd.DataFrame([{"a": o1, "b": o2}, {"a": o2, "b": o1}])
df.replace(to_replace={"a": o1}, value={"a": o3})
```

#### Problem description

In pandas 1.0.5
```
In [1]: import pandas as pd
   ...:
   ...: o1 = object()
   ...: o2 = object()
   ...: o3 = object()
   ...:
   ...: df = pd.DataFrame([{"a": o1, "b": o2}, {"a": o2, "b": o1}])
   ...: df.replace(to_replace={"a": o1}, value={"a": o3})
   ...:
Out[1]:
                                   a                                  b
0  <object object at 0x7fcc03c86a10>  <object object at 0x7fcc03c86a00>
1  <object object at 0x7fcc03c86a00>  <object object at 0x7fcc04b2c040>
```

In pandas 1.1.2
```
In [1]: import pandas as pd
   ...:
   ...: o1 = object()
   ...: o2 = object()
   ...: o3 = object()
   ...:
   ...: df = pd.DataFrame([{"a": o1, "b": o2}, {"a": o2, "b": o1}])
   ...: df.replace(to_replace={"a": o1}, value={"a": o3})
   ...:
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
contrib/python/ipython/py3/IPython/__init__.py in <module>
      6
      7 df = pd.DataFrame([{"a": o1, "b": o2}, {"a": o2, "b": o1}])
----> 8 df.replace(to_replace={"a": o1}, value={"a": o3})

contrib/python/pandas/py3/pandas/core/frame.py in replace(self, to_replace, value, inplace, limit, regex, method)
   4376         method="pad",
   4377     ):
-> 4378         return super().replace(
   4379             to_replace=to_replace,
   4380             value=value,

contrib/python/pandas/py3/pandas/core/generic.py in replace(self, to_replace, value, inplace, limit, regex, method)
   6513                         if col in value.keys() and col in self
   6514                     }
-> 6515                     return self._replace_columnwise(mapping, inplace, regex)
   6516
   6517                 # {'A': NA} -> 0

contrib/python/pandas/py3/pandas/core/frame.py in _replace_columnwise(self, mapping, inplace, regex)
   4412
   4413                 target, value = mapping[ax[i]]
-> 4414                 newobj = ser.replace(target, value, regex=regex)
   4415
   4416                 res.iloc[:, i] = newobj

contrib/python/pandas/py3/pandas/core/series.py in replace(self, to_replace, value, inplace, limit, regex, method)
   4561         method="pad",
   4562     ):
-> 4563         return super().replace(
   4564             to_replace=to_replace,
   4565             value=value,

contrib/python/pandas/py3/pandas/core/generic.py in replace(self, to_replace, value, inplace, limit, regex, method)
   6437             or is_list_like(to_replace)
   6438         ):
-> 6439             raise TypeError(
   6440                 "Expecting 'to_replace' to be either a scalar, array-like, "
   6441                 "dict or None, got invalid type "

TypeError: Expecting 'to_replace' to be either a scalar, array-like, dict or None, got invalid type 'object'
```

Is this expected behavior or bug?

#### Expected Output

#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit           : 2a7d3326dee660824a8433ffd01065f8ac37f7d6
python           : 3.8.5.final.0
python-bits      : 64
OS               : Linux
OS-release       : 4.4.171-70.1
Version          : #1 SMP Thu Jan 31 10:46:27 UTC 2019
machine          : x86_64
processor        : x86_64
byteorder        : little
LC_ALL           : None
LANG             : en_US.UTF-8
LOCALE           : en_US.UTF-8

pandas           : 1.1.2
numpy            : 1.16.6
pytz             : 2020.1
dateutil         : 2.8.1
pip              : None
setuptools       : 44.1.0
Cython           : None
pytest           : None
hypothesis       : None
sphinx           : None
blosc            : None
feather          : None
xlsxwriter       : None
lxml.etree       : None
html5lib         : None
pymysql          : None
psycopg2         : None
jinja2           : 2.11.2
IPython          : 7.18.1
pandas_datareader: None
bs4              : None
bottleneck       : None
fsspec           : None
fastparquet      : None
gcsfs            : None
matplotlib       : None
numexpr          : None
odfpy            : None
openpyxl         : None
pandas_gbq       : None
pyarrow          : None
pytables         : None
pyxlsb           : None
s3fs             : None
scipy            : None
sqlalchemy       : None
tables           : None
tabulate         : None
xarray           : None
xlrd             : None
xlwt             : None
numba            : None


</details>
