如果我有:
resultObject = json.loads(resultQuery, object_hook=lambda d: namedtuple('X', d.keys())(*d.values()))
SearchResults = resultObject.result.songs
返回类似的内容:
X(jsonrpc=u'2.0', id=u'dynamicQuery', result=X(limits=X(start=0, total=149, end=149), songs=[X(songid=1804, label=u'Lake of Fire (unplugged)'), X(songid=1805, label=u'Rape Me')]
如何返回仅包含每个“标签”的列表?
我是否需要使用for
循环并获取每首歌曲的标签并将其附加到我的列表中?
或者是否有一种我以前无法找到的简单方法?
答案 0 :(得分:0)
你必须特别处理歌曲处理:
def load_object(d):
if 'songid' in d:
return d['label']
keys = sorted(d)
return namedtuple('X', keys)(*(d[k] for k in keys))
resultObject = json.loads(resultQuery, object_hook=load_object)
这也会对键进行排序,以确保获得一致的对象(相同的顺序)。
这会给你:
>>> json.loads(t, object_hook=load_object)
X(id=u'dynamicQuery', jsonrpc=u'2.0', result=X(limits=X(end=149, start=0, total=149), songs=[u'Lake of Fire (unplugged)', u'Rape Me']))