使用特定键值对从列表返回dict条目的Pythonic方法?

时间:2017-10-11 20:06:45

标签: python python-3.x list

我正在尝试处理JSON文件。文件中包含的links列表如下:

"links": [
    {
        "href": "https://specificURL/incidents",
        "rel": "canonical"
    },
    {
        "href": "https://specificURL/metadata-catalog/incidents",
        "mediaType": "application/schema+json",
        "rel": "describedby"
    },
    {
        "href": "https://specificURL/incidents?limit=10&fromId=11",
        "rel": "next"
    },
    {
        "href": "https://specificURL/incidents-search-form",
        "rel": "search-form"
    },
    {
        "href": "https://specificURL/incidents?limit=10",
        "rel": "self"
    }
]

我通过遍历列表来拉动下一个链接,但我很好奇是否有更多“pythonic”方式。

工作代码:

for link in responseData['links']:
    if link['rel'] == "next":
        print(link['href'])

这真的是最狡猾的方式吗?

1 个答案:

答案 0 :(得分:3)

您可以重新组织数据结构,以便按rel为每个条目编制索引。它将提供一种更自然的方式来访问条目,代价是必须进行转换传递。

hrefs_by_rel = {link['rel']: link['href'] for link in responseData['links']}
print(hrefs_by_rel['next'])

(这也会导致重复的条目被丢弃。)

可以将显式循环更改为列表理解,但我不一定认为它更好。

rel_hrefs = [link['href'] for link in responseData['links'] if link['rel'] == "next"]
相关问题