Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从namedtuple中的列表创建列表_Python_Json - Fatal编程技术网

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']))

谢谢你,这很好用。。。我花了好几天的时间才弄明白…对不起,这个论坛是全新的-我没意识到投票支持你在我这个级别是行不通的。。。你的回答是“接受”的,我对此非常感激。。。