我该怎么用而不是isinstance()

时间:2016-05-18 14:38:19

标签: python

我必须解析一些由列表组成的对象。但它可以列在列表中的列表中:obj=[[smth1],[[smth2],[smth3]]]每个smthX也可以是一个列表。

我正在寻找一个我知道在“第二层列表”中的值。在我的示例中,它可能位于[[smth2],[smth3]]

我现在正在做的是迭代我的对象,并测试我正在迭代的是一个列表awell。如果是的话,我会寻找自己的价值。

  for list in obj :
    if isinstance(list, obj) :
      for souslist in list :
        I LOOK FOR MY VALUE

但是我到处都在阅读(http://canonical.org/~kragen/isinstance/很多stackoverflow线程)isinstance()的使用只适用于特殊场合(我的使用看起来不像特殊场合)

在使用isinstance()之前,我正在测试哪个列表[0]在试一试/除外但是感觉甚至是wronger。是否有其他方式以干净的方式实现这一目标? (我对obj我必须处理的格式没有任何影响力。

1 个答案:

答案 0 :(得分:1)

如果您要查找首先关闭两个项目(列表)的子列表,您需要检查长度(如果您确定所有项目都是列表),那么检查子列表中的所有项目是否都是列表使用isinstance()

for sub in obj:
    if len(sub) == 2 and all(isinstance(i, list) for i in sub): # you can add " and isinstance(sub, list)" if you are not sure about the type of sub 
        look_val(sub)