By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,222 Members | 2,416 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,222 IT Pros & Developers. It's quick & easy.

Using the result of type() in a boolean statement?

P: n/a
If I define a dictionary where one or more of the values is also a
dictionary, e.g.:

my_dict={"a":"string", "b":"string", "c":{"x":"0","y":"1"},
"d":"string"}

How can I use the output of type() so I can do one thing if the value
is a string, and another if the value is a dictionary?

i.e., I'd like to define a loop like this, but I'm not sure of the
syntax:

for key, value in my_dict.items():
if type{value) is <type 'dict'>:
# do the dictionary logic
elif type(value) is <type 'str'>:
# do the string logic
# etc
Nov 12 '08 #1
Share this Question
Share on Google+
2 Replies


P: n/a
dpapathanasiou wrote:
If I define a dictionary where one or more of the values is also a
dictionary, e.g.:

my_dict={"a":"string", "b":"string", "c":{"x":"0","y":"1"},
"d":"string"}

How can I use the output of type() so I can do one thing if the value
is a string, and another if the value is a dictionary?

i.e., I'd like to define a loop like this, but I'm not sure of the
syntax:

for key, value in my_dict.items():
if type{value) is <type 'dict'>:
if type(v) is dict:
# do the dictionary logic
elif type(value) is <type 'str'>:
.... is str
# do the string logic
For built-in types without a built-in name, either import the types
module or just make one yourself with type().
>>func = type(lambda:1)
func
<class 'function'>
>>bif = type(abs)
bif
<class 'builtin_function_or_method'>

For userclass instances, use the userclass.

Terry Jan Reedy
Nov 12 '08 #2

P: n/a
dpapathanasiou wrote:
... I'd like to define a loop like this, ...
for key, value in my_dict.items():
if type{value) is <type 'dict'>:
# do the dictionary logic
elif type(value) is <type 'str'>:
# do the string logic
# etc
You're searching for "isinstance" (or possibly issubclass)
for key, value in my_dict.items():
if isinstance(value, dict):
# do the dictionary logic
elif isinstance(value, str): # use basestring for str & unicode
# do the string logic

Or, if you _must_ use type:
if issubclass(type(value), dict):
# do the dictionary logic
elif issubclass(type(value), str):
# do the string logic
--Scott David Daniels
Sc***********@Acm.Org
Nov 12 '08 #3

This discussion thread is closed

Replies have been disabled for this discussion.