BUG: DataFrame.__setitem__ raising ValueError when setting multiple values to dup columns
- [x] closes #15695
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [x] whatsnew entry

Setting with a scalar key which is duplicated in columns should be the same as using a listlike key
Hacky, will try to improve Hm this is a hacky edge case:
```
df = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=["a", "b", "a"])

df["a"] = df.index
```

This is tested in a unit test ``test_column_dups_operations``

If this should work, we can't really implement 

```
df["a"] = (1, 2)
```

because here is not clear what to do, interpret (1,2) as a column, which should result in (this is tested with the case above)
```
   a  b  a
0  1  2  1
1  2  5  2
```
or interpret as a row (as described in the op) which would result in 
```
   a  b  a
0  1  2  2
1  1  5  2
```

The loc case interprets this as
```
df.loc[:,"a"] = df.index
   a  b  a
0  0  2  1
1  0  5  1
```

which results in an Error if len(index) != number of "a" in columns
 thanks @phofl  Doesn't this slow down every setting operation with a single key? I think it's fine as a temporary measure, but really we shouldn't be doing multiple lookups for a single operation. > Doesn't this slow down every setting operation with a single key?

Well no, I guess only with a list of keys. Still, we could check if ``columns`` is unique (which is O(1), right?) before the test involving  ``get_indexer_for``? That's probably a good idea, yes