首页 > 解决方案 > 仅检索第一个列表(JSON-Python)

问题描述

我有一个复杂的 JSON 对象,其中包含有关单词的字典信息,我只想获取同义词。我设法检索了它们,但有些单词有两个或多个同义词列表(因为它们可以同时是动词和名词)。我只想获得第一个同义词列表。这是我所做的:

import requests
import json
with open(r'C:\Users...') as file:
    list = []
    for line in file.readlines():
        list += line.split() 
    for keyword in list:
        print(keyword)
        ship_api_url = "https://..."
        request_data = requests.get(ship_api_url)
        data = request_data.text
        parsed = json.loads(data)
        # print(json.dumps(parsed, indent=3))
        for item in parsed:
            print(item['meta']['syns'][0])

这就是我得到的——注意“watch”这个词有三个同义词列表,“create”这个词只有一个同义词列表,“created”这个词有两个同义词列表:

watch
['custodian', 'guard', 'guardian', 'keeper', 'lookout', 'minder', 'picket', 'sentinel', 'sentry', 'warden', 'warder', 'watcher', 'watchman']
['eye', 'follow', 'observe']
['anticipate', 'await', 'expect', 'hope (for)']
create
['beget', 'breed', 'bring', 'bring about', 'bring on', 'catalyze', 'cause', 'do', 'draw on', 'effect', 'effectuate', 'engender', 'generate', 'induce', 'invoke', 'make', 'occasion', 'produce', 'prompt', 'result (in)', 'spawn', 'translate (into)', 'work', 'yield']
created
['begot', 'bred', 'brought', 'brought about', 'brought on', 'catalyzed', 'caused', 'did', 'drew on', 'effected', 'effectuated', 'engendered', 'generated', 'induced', 'invoked', 'made', 'occasioned', 'produced', 'prompted', 'resulted (in)', 'spawned', 'translated (into)', 'worked', 'yielded']
['beget', 'breed', 'bring', 'bring about', 'bring on', 'catalyze', 'cause', 'do', 'draw on', 'effect', 'effectuate', 'engender', 'generate', 'induce', 'invoke', 'make', 'occasion', 'produce', 'prompt', 'result (in)', 'spawn', 'translate (into)', 'work', 'yield']

如果我在我已经拥有的 [0] 之后添加另一个 [0],我会得到每个列表的第一个单词,而不是我需要的第一个完整列表......

标签: pythonjsonlistindexing

解决方案


正如 martineau 的评论中所建议的那样,我通过在print(item['meta']['syns'][0])停止循环之后添加一个 break 语句解决了这个问题。


推荐阅读