QuerySelect and QuerySelectList

Perhaps the default error message could include the invalid key:

```python
`'Invalid key: {0}.'.format(val)
```