擅长:python、mysql、java
<p>您可以递归地展平列表并在其中搜索:</p>
<pre><code>def flatten(l):
res = []
for e in l:
if type(e) is dict:
tmp = e.values()
res += flatten(tmp)
elif type(e) is list:
tmp = e[:]
res += flatten(tmp)
else:
res += e
return res
if "Foo" in flatten(list)
</code></pre>
<p>编辑:出于性能考虑,不需要计算数组并在其中搜索。以下是仅在数组中搜索的版本:</p>
<pre><code>def is_in_superlist(l, m):
for e in l:
if type(e) is dict:
return is_in_superlist(e.values(), m)
elif type(e) is list:
return is_in_superlist(e, m)
else:
if e == m:
return True
return False
is_in_superlist(list, "Foo")
</code></pre>