类型错误:'open'对象不支持索引,但仍可以迭代。如何获取 Open 对象的前 n 个结果?



我可以使用此代码在开放对象上迭代

with jsonl.open("train.dataset", gzip = True) as train_file:
    for entry in train_file:
        print(entry["summary"], entry["text"])

,但是说我只想要前10个结果。此代码

with jsonl.open("train.dataset", gzip = True) as train_file:
    for i in range(0, 10):
        print(train_file[i]["summary"], train_file[i]["text"])

导致

typeError:'open'对象不支持索引

如果可以迭代一个对象,为什么它不能支持索引直接访问零件。还有一种替代方法可以在特定索引中获取数据,/或仅检索第一个N结果?

如果 train_file list,您可以使用slice:

with jsonl.open("train.dataset", gzip=True) as train_file:
    for entry in train_file[0:10]:
        print(entry["summary"], entry["text"])

如果 train_file 是一个觉得,您可以使用 itertools.islice

import itertools
with jsonl.open("train.dataset", gzip=True) as train_file:
    for entry in itertools.islice(train_file, 10):
        print(entry["summary"], entry["text"])

最新更新