我的问题是双重的。首先,Python中是否有一种方法可以减少JSON对象/列表中的冗余嵌套?举个简单的例子,它的行为方式如下:
In [1]: reducer([1])
Out[1]: [1]
In [2]: reducer([[[1]]])
Out[2]: [1]
In [3]: reducer({"menu": {"header": "menu", "items": [[{"id": 81}]]}})
Out[3]: {"menu": {"header": "menu", "items": [{"id": 81}]}}
第二,python中是否有本地extend_or_append
函数?该函数的行为如下:
In [1]: tt = []
In [2]: extend_or_append(tt,1)
Out[2]: [1]
In [3]: extend_or_append(tt,[2,3,4,5])
Out[3]: [1,2,3,4,5]
如果此功能不存在,实施它的有效方法是什么?
答案 0 :(得分:1)
你的第二个问题很简单。
def extend_or_append(this, that):
if isinstance(that, list):
this.extend(that)
else:
this.append(that)
return this
第一个是有点棘手
def flatten(l):
for el in l:
if isinstance(el, collections.Iterable) and not isinstance(el, basestring):
for sub in flatten(el):
yield sub
else:
yield el
res = list(flatten([[[[[1]]]]]))