2017-10-11 99 views
1

我想要处理一个JSON文件。该文件中包含的是links像这样的列表:从特定的键值对列表中返回字典条目的pythonic方法?

"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" 
    } 
] 

我通过列表循环拉动下一环节,但我如果有一个更“Python化”的方式来做到这一点好奇。

工作代码:

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

这真的是最Python的方式做到这一点?

+6

此代码是Pythonic。如果你想创建一个列表,你可以使用列表理解,但for循环*完全pythonic *。顺便说一句,这不是一个数组,这是一个“列表” –

回答

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"] 
相关问题