Repository: modin-project/modin

Issue:
BUG: `df.get()` with list throws unhashable type error
### Modin version checks

- [X] I have checked that this issue has not already been reported.

- [X] I have confirmed this bug exists on the latest released version of Modin.

- [ ] I have confirmed this bug exists on the main branch of Modin. (In order to do this you can follow [this guide](https://modin.readthedocs.io/en/stable/getting_started/installation.html#installing-from-the-github-master-branch).)


### Reproducible Example

```python
import modin.pandas as pd
df = pd.DataFrame({"col0": [0,1], "col1":[1,2]})
pd.get(["col0"]) # This throws an error
```


### Issue Description

Trying to call `get` with a list of column names throws an "unhashable type" error. 

### Expected Behavior

Output should return a DataFrame with the specified columns.

### Error Logs

<details>

```python-traceback

TypeError                                 Traceback (most recent call last)
Input In [7], in <cell line: 1>()
----> 1 df.get(["col0"])

File ~/opt/anaconda3/envs/modin/lib/python3.9/site-packages/modin/logging/logger_metaclass.py:68, in logger_class_wrapper.<locals>.log_wrap(*args, **kwargs)
     66     logger.info(f"END::PANDAS-API::{class_name}.{method_name}")
     67     return result
---> 68 return method(*args, **kwargs)

File ~/opt/anaconda3/envs/modin/lib/python3.9/site-packages/modin/pandas/base.py:1646, in BasePandasDataset.get(self, key, default)
   1642 def get(self, key, default=None):  # noqa: PR01, RT01, D200
   1643     """
   1644     Get item from object for given key.
   1645     """
-> 1646     if key in self.keys():
   1647         return self.__getitem__(key)
   1648     else:

File ~/opt/anaconda3/envs/modin/lib/python3.9/site-packages/pandas/core/indexes/base.py:5022, in Index.__contains__(self, key)
   4987 def __contains__(self, key: Any) -> bool:
   4988     """
   4989     Return a boolean indicating whether the provided key is in the index.
   4990 
   (...)
   5020     False
   5021     """
-> 5022     hash(key)
   5023     try:
   5024         return key in self._engine

TypeError: unhashable type: 'list'

```

</details>


### Installed Versions

<details>

INSTALLED VERSIONS
------------------
commit           : 138a95401473cd96d5d7456d897b9d087bc45b93
python           : 3.9.12.final.0
python-bits      : 64
OS               : Darwin
OS-release       : 21.3.0
Version          : Darwin Kernel Version 21.3.0: Wed Jan  5 21:37:58 PST 2022; root:xnu-8019.80.24~20/RELEASE_ARM64_T6000
machine          : x86_64
processor        : i386
byteorder        : little
LC_ALL           : None
LANG             : en_US.UTF-8
LOCALE           : en_US.UTF-8

Modin dependencies
------------------
modin            : 0.15.3
ray              : 1.12.1
dask             : 2022.01.1
distributed      : 2022.01.1
omniscidbe       : None

pandas dependencies
-------------------
pandas           : 1.4.4
numpy            : 1.22.4
pytz             : 2022.1
dateutil         : 2.8.2
setuptools       : 61.2.0
pip              : 22.1.2
Cython           : None
pytest           : 7.1.2
hypothesis       : None
sphinx           : 5.0.1
blosc            : None
feather          : 0.4.1
xlsxwriter       : None
lxml.etree       : 4.9.1
html5lib         : 1.1
pymysql          : None
psycopg2         : None
jinja2           : 3.1.2
IPython          : 8.4.0
pandas_datareader: None
bs4              : 4.11.1
bottleneck       : None
brotli           : 
fastparquet      : 0.8.1
fsspec           : 2022.7.1
gcsfs            : 2022.7.1
markupsafe       : 2.1.1
matplotlib       : 3.5.2
numba            : None
numexpr          : 2.8.1
odfpy            : None
openpyxl         : 3.0.10
pandas_gbq       : 0.17.6
pyarrow          : 8.0.0
pyreadstat       : None
pyxlsb           : None
s3fs             : 2022.7.1
scipy            : 1.8.1
snappy           : None
sqlalchemy       : 1.4.37
tables           : 3.7.0
tabulate         : None
xarray           : 2022.3.0
xlrd             : 2.0.1
xlwt             : None
zstandard        : None

</details>



Discussion:

Resolving patch:
diff --git a/modin/pandas/base.py b/modin/pandas/base.py
--- a/modin/pandas/base.py
+++ b/modin/pandas/base.py
@@ -1527,9 +1527,10 @@ def get(self, key, default=None):  # noqa: PR01, RT01, D200
         """
         Get item from object for given key.
         """
-        if key in self.keys():
+        # Match pandas behavior here
+        try:
             return self.__getitem__(key)
-        else:
+        except (KeyError, ValueError, IndexError):
             return default
 
     def gt(self, other, axis="columns", level=None):  # noqa: PR01, RT01, D200


Test patch:
diff --git a/modin/pandas/test/test_general.py b/modin/pandas/test/test_general.py
--- a/modin/pandas/test/test_general.py
+++ b/modin/pandas/test/test_general.py
@@ -22,6 +22,7 @@
 from pandas.testing import assert_frame_equal
 
 from .utils import (
+    create_test_dfs,
     test_data_values,
     test_data_keys,
     df_equals,
@@ -824,3 +825,13 @@ def make_frame(lib):
         return lib.to_timedelta(series).to_frame(name="timedelta")
 
     eval_general(pd, pandas, make_frame)
+
+
+@pytest.mark.parametrize(
+    "key",
+    [["col0"], "col0", "col1"],
+    ids=["valid_list_of_string", "valid_string", "invalid_string"],
+)
+def test_get(key):
+    modin_df, pandas_df = create_test_dfs({"col0": [0, 1]})
+    eval_general(modin_df, pandas_df, lambda df: df.get(key))