Python 从namedtuple中的列表创建列表
如果我有:Python 从namedtuple中的列表创建列表,python,json,Python,Json,如果我有: 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=[
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')]
我如何返回一个列表,其中只包含每个列表的“标签”
我是否需要为循环使用,获取每首歌曲的标签并将其附加到列表中
还是有一种我还没有找到的更简单的方法?您必须对歌曲处理进行特殊处理:
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']))
谢谢你,这很好用。。。我花了好几天的时间才弄明白…对不起,这个论坛是全新的-我没意识到投票支持你在我这个级别是行不通的。。。你的回答是“接受”的,我对此非常感激。。。