所以,好吧,没有伟大的暗示的帮助,我必须这样做。它看起来是个不错的发电机。我的问题更多的是关于重新制定职能的策略,一个人可以屈服于一个简单的清单,而不是我具体做错了什么。
def flat_on_level(it, d=-1, level=None):
"""
>>> list(flat_on_level([[[['a']]]], level=3))
['a']
"""
if isinstance(it, dict):
y = it.values()
else:
y = it
if not isinstance(y, collections.Iterable):
yield y
else:
for x in y:
if d == level:
yield x
else:
yield from flat_on_level(x, d=d + 1, level=level)