我需要知道Python中的变量是字符串还是字典。下面的代码有问题吗?
if type(x) == type(str()):
do_something_with_a_string(x)
elif type(x) == type(dict()):
do_somethting_with_a_dict(x)
else:
raise ValueError
更新:我接受avisser的答案(尽管如果有人解释为什么isinstance比type(x) is更受欢迎,我会改变主意)。
但是感谢nakedfanatic提醒我,使用dict(作为case语句)通常比使用if/elif/else系列更简洁。
让我详细说明我的用例。如果一个变量是一个字符串,我需要把它放在一个列表中。如果是字典,我需要一个唯一值的列表。这是我想到的:
def value_list(x):
cases = {str: lambda t: [t],
dict: lambda t: list(set(t.values()))}
try:
return cases[type(x)](x)
except KeyError:
return None
如果isinstance是首选,你将如何编写这个value_list()函数?