我试图从一本大字典中找出特定的值,但我在这方面遇到了困难.我正在解析来自API的数据,并试图从响应中仅获取name属性.这是我收到的回复的格式:

{'data': 
     [{'id': '5555', 'type': 'proj-pha', 'links': {'self': '{sensitive_url}'}, 'attributes': 
     {'active': True, 'name': 'Plan', 'language': 'plan_l', 'position': 1}, 
     'relationships': {'account': {'links': {'self': '{sensitive_url}', 'related':
     '{sensitive_url}'}}, 'pro-exp': {'links': {'self': 
     '{sensitive_url}', 'related': '{sensitive_url}'}}}}

为了澄清,我将API响应打印为字典,使用:

以下是我的脚本中的一些通用代码:

params = {
    "client_id": CLIENT_ID,
    "client_secret": CLIENT_SECRET,
    "redirect_uri": REDIRECT_URI,
    "response_type": RESPONSE_TYPE
}

token = '{sensitive}'
print("Bearer Token: " + token)
session = requests.session()
session.headers = {"authorization": f"Bearer {token}"}

base_api_endpoint = "{sensitive}"
response = session.get(base_api_endpoint)
print(response.json())

我想要的只是'name': 'Plan'属性,仅此而已.提供的数据会将其自身重复到下一个"id",依此类推,直到所有迭代都已发布.我试图查询出所有这些的列表.我并不是在寻找一个特定的答案,如何通过循环获得所有这些,虽然这会很有帮助,但我更关注的是能够自己挑出"name"值.

谢谢

推荐答案

要获取所有名称,只需使用列表压缩,如下所示:

[item['attributes']['name'] for item in response['data']]

如果您只需要第i项的名称,只需执行以下操作:

response['data'][i]['attributes']['name']

最后,如果您想要特定id的名称:

def name_by_id(response, id):
    for item in response['data']:
        if item['id'] == id:
            return item['attributes']['name']
    return None

Python相关问答推荐

如果值不存在,列表理解返回列表

在线条上绘制表面

如何获取numpy数组的特定索引值?

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

多处理队列在与Forking http.server一起使用时随机跳过项目

判断solve_ivp中的事件

将scipy. sparse矩阵直接保存为常规txt文件

使用Python查找、替换和调整PDF中的图像'

如何使用两个关键函数来排序一个多索引框架?

Python—转换日期:价目表到新行

循环浏览每个客户记录,以获取他们来自的第一个/最后一个渠道

计算空值

为什么t sns.barplot图例不显示所有值?'

如何在GEKKO中使用复共轭物

Python Mercury离线安装

如何在Python中解析特定的文本,这些文本包含了同一行中的所有内容,

如何从一个维基页面中抓取和存储多个表格?

在使用ROLING()获得最大值时,是否可以排除每个窗口中的前n个值?

有什么方法可以在不对多索引DataFrame的列进行排序的情况下避免词法排序警告吗?

PYODBC错误(SQL包含-26272个参数标记,但提供了235872个参数,HY 000)