TypeError: unsupported operand type(s) for +: 'dict_keys' and 'list' TypeError: unsupported operand type(s) for +: 'dict_keys' and 'list' python-3.x python-3.x

TypeError: unsupported operand type(s) for +: 'dict_keys' and 'list'


In Python 3.x, dict.keys returns a dictionary view:

>>> a = {1:1, 2:2}>>> a.keys()dict_keys([1, 2])>>> type(a.keys())<class 'dict_keys'>>>>

You can get what you want by putting those views in list:

X6_IGNORED = list(X2_X5_MAPPINGS.keys()) + ['BN', 'PDF', 'B']X9_REMOVED = list(X2_X5_MAPPINGS.keys()) + ['BN', 'PDF']

Actually, you don't even need .keys anymore since iterating over a dictionary yields its keys:

X6_IGNORED = list(X2_X5_MAPPINGS) + ['BN', 'PDF', 'B']X9_REMOVED = list(X2_X5_MAPPINGS) + ['BN', 'PDF']


Yes, it has something to do with your Python version. In Python 2.x, dict.keys returns a list of a dictionary’s keys. In Python 3.x, it provides a view object of the keys.

You can call list() on the result to make it a list, or just call list() on the entire dictionary as a shortcut.


In Python 3.x, dict.keys doesn't return a list, but instead a view object, dict_keys.

To achieve what you wanted, you need to convert it to a list:

X6_IGNORED = list(X2_X5_MAPPINGS.keys()) + ['BN', 'PDF', 'B']