gpt4 book ai didi

python - 检查 Python 变量类型的最佳(惯用)方法是什么?

转载 作者:IT老高 更新时间:2023-10-28 12:08:15 24 4
gpt4 key购买 nike

我需要知道 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 的回答(尽管如果有人解释为什么 isinstancetype(x) is 更受欢迎,我会改变主意)。

但感谢裸狂热者提醒我,使用 dict(作为案例陈述)通常比使用 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()函数?

最佳答案

如果有人将 unicode 字符串传递给您的函数会发生什么?还是从dict派生的类?还是一个实现类dict接口(interface)的类?以下代码涵盖了前两种情况。如果您使用的是 Python 2.6,您可能需要使用 collections.Mapping而不是 dict 根据 ABC PEP .

def value_list(x):
if isinstance(x, dict):
return list(set(x.values()))
elif isinstance(x, basestring):
return [x]
else:
return None

关于python - 检查 Python 变量类型的最佳(惯用)方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/378927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com