仅检索第一个列表(JSON Python)

仅检索第一个列表(JSON Python),python,json,list,indexing,Python,Json,List,Indexing,我有一个复杂的JSON对象,其中包含关于单词的字典信息,我只想得到同义词。我设法找到了它们,但有些单词有两个或两个以上的同义词列表(因为它们可以同时是动词和名词)。我只想得到同义词的第一个列表。以下是我所做的: import requests import json with open(r'C:\Users...') as file: list = [] for line in file.readlines(): list += line.split()

我有一个复杂的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],我会得到每个列表的第一个单词,而不是我需要的第一个完整列表…

如果我做对了,您想做如下操作:

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:
            for i in item['meta']['syns']:
                print(item['meta']['syns'][i])

另外,不要将变量命名为
list
,因为它在Python中是保留变量。

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

只需在
print(item['meta']['syns'][0]之后添加一个
break
语句即可
并停止循环。非常感谢!通过break语句,我得到了我想要的确切结果。但我仍然想知道如何从列表中选择一个列表…第一个列表是
项['meta']['syns'][0]
,您可以通过索引来访问其中的元素,就像您在问题中添加
[0]
时一样。它是一个列表,所以你可以做其他事情,比如通过
for
循环迭代它的内容。感谢变量命名技巧。不幸的是,您发送给我的代码不起作用,我得到:TypeError:list索引必须是整数或片,而不是list