If I have kwargs that have list and integer values, how do I type check the items in a for if loop?
I keep getting TypeError: 'int' is not iterable
or it skips the if statement.
I've tried operators ==
, !=
, is
, is not
with list
, List
, iter
, type(list)
and int
Example: If my kwargs are...
kwargs = {'foo': [1, 2], 'bar': 2, 'baz': 3}
new_list = []
for kw, args in kwargs.items():
if args == list:
for arg in args:
new_list.append(str(arg))
else:
new_list.append(str(args))
print(new_list)
>>> ['[1, 2]', '2', '3']
and if I switch the if statement to if args != int:
I get TypeError: 'int' is not iterable
To check if a variable is a list you can simply write:
if isinstance(var, list):
pass
But if a variable could be anything iterable, use typing module.
from typing import Iterable # or from collections.abc import Iterable
if isinstance(var, Iterable):
pass
There are many other abstract base classes you can use, so I would suggest reading the documentation to learn about them.