Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查元素是列表还是其他对象_Python - Fatal编程技术网

Python 检查元素是列表还是其他对象

Python 检查元素是列表还是其他对象,python,Python,我有一个对象,它包含一个名为“companys”的元素。 此元素可以是对象列表,也可以只是单个对象(不包含在列表中) 我希望遍历所有公司,但如果元素“companys”只是一个项目(不包含在列表中),则此示例将失败: 我尝试在for循环之前进行测试,例如: if type(companies['company']) is list: # do your thing 但这也失败了 有人能帮忙吗?首先,这是一种非常可怕的数据结构方式,你应该向创建它的人投诉。如果一个项目可以是一个列表,那么

我有一个对象,它包含一个名为“companys”的元素。 此元素可以是对象列表,也可以只是单个对象(不包含在列表中)

我希望遍历所有公司,但如果元素“companys”只是一个项目(不包含在列表中),则此示例将失败:

我尝试在for循环之前进行测试,例如:

if type(companies['company']) is list:
    # do your thing
但这也失败了


有人能帮忙吗?

首先,这是一种非常可怕的数据结构方式,你应该向创建它的人投诉。如果一个项目可以是一个列表,那么它应该始终是一个列表,即使该列表只包含一个元素


但是,您显示的代码应该可以工作,尽管更好的方法是
如果是instance(companys['company',list)
。如果仍然不起作用,您需要显示数据以及使用数据的确切代码。

您可以从非列表中创建一个列表,无条件使用“for…in…”


您必须首先将JSON字符串转换回python对象。如果您按字面意思键入
If type(companys['company']是list:
,那么它不起作用的原因是您省略了一个右括号-它应该是
If type(companys['company'])is list:
但是DanielRoseman使用
isinstance
的解决方案更好。说@T.J.Crowder,你的编辑。要不要顺便来看看并提供你的理由?@Bart:谢谢你让我知道!我从问题中删除了“JSON”,因为JSON与问题无关,只是关于对象,而不是“JSON对象”…我认为这是一种可怕的数据结构方式,
isinstance
是一种更好的方法。我只想在OP中添加以下内容:
如果不是isinstance(companys['company',,list):companys['company']=[companys['company']]
可能值得一做——这样可以避免特殊的大小写循环等。不幸的是,不是我用这种方式构造的,它来自Yahoo的API。因此Yahoo正在返回这样的JSON。不知怎么的,isinstance起了作用,我以前的(使用正确数量的右括号)仍然失败。
if type(companies['company']) is list:
    # do your thing
companies = list(companies)
for company in companies:
    # use "company" in some way