高度嵌套d的Python字典/列表理解

2024-09-27 21:30:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我从一个API请求返回了一堆json,它的结构(我认为)是一个包含列表的字典,其中我需要的大多数数据都在第一个列表中,而该列表又包含了我正在评估的每个项的字典,第一个条目是一个简单的键:值对识别物品,第二项是键:值对其中键是对源数据中关系的引用,值是另一个列表,其中包含每个条目/属性的字典。在

我可能把事情搞砸了,但这正是它看起来的样子。“class_id”的值都是唯一的,“tag_id”的值在子集中是唯一的,但是可以重复,或者(就像第一个条目中的空括号一样)根本不存在。在

{'Data': [{'class_id': 'class_000',
       'relationship_id': []},
      {'class_id': 'class_001',
       'relationship_id': [{'tag_id': 'tag_000'},
                           {'tag_id': 'tag_001'},
                           {'tag_id': 'tag_002'},
                           {'tag_id': 'tag_003'},
                           {'tag_id': 'tag_004'}]},
      {'class_id': 'class_002',
       'relationship_id': [{'tag_id': 'tag_000'},
                           {'tag_id': 'tag_003'},
                           {'tag_id': 'tag_055'},
                           {'tag_id': 'tag_777'},]}],
'ResponseCode': 200, 'ResponseText': 'OK'}

我需要的是将类的标识和标签的标识传递给每个实例的一个变量。所以我想要的输出是,得到第一对并将其设置为一个变量,这样我就可以对它求值,然后执行下一个,依此类推,直到最后一对得到为止。在

更新:为了更好的上下文,我发布了当前要使用的实际函数,我必须使用MySQL命令中的变量,在本例中,'a_class_id'和'a_tag_id':

^{pr2}$

我知道更好的方法是用字典/列表理解。我只是不知道如何在dicts/list之间进行嵌套式的切换。(我这个月才开始学习Python)这有可能吗?在


Tags: 数据apiidjson列表字典关系tag
1条回答
网友
1楼 · 发布于 2024-09-27 21:30:56

假设您有一个函数do_something,它接受类名和标记名

def do_something(klass, tag):
    ...

然后,您可以使用该类中所有数据的组合来计算:

^{pr2}$

例如,do_something

>>> def do_something(klass, tag):
...     return "{}:{}".format(klass, tag)

那么

>>> [do_something(klass["class_id"], tag["tag_id"])
... for klass in data["Data"] for tag in klass["relationship_id"]]
['class_001:tag_000', 'class_001:tag_001', 'class_001:tag_002', 'class_001:tag_003', 'class_001:tag_004', 'class_002:tag_000', 'class_002:tag_003', 'class_002:tag_055', 'class_002:tag_777']

相关问题 更多 >

    热门问题