Вложенность чтения файлов для циклов не будет повторяться несколько раз - PullRequest
0 голосов
/ 05 сентября 2018

Я знаю, что внешний цикл for должен запускаться один раз, а внутренний - полностью, но после завершения внутреннего цикла for внешний цикл for никогда не возобновляется со второй строкой в ​​файле. Что здесь не так?

import csv
import pprint
import sys


team = []

with open("sample_runner_data.csv", "r") as sample_csv:
    sample_csv = csv.DictReader(sample_csv)
    for lines in sample_csv:
        theLine = lines["team"]
        for line in sample_csv:
            if(theLine == line["team"]):
                print(line["team"])
                team.append(line["time"])
'''
The output of the above print(line["team]) statement is as follows. Abra is simply the team 
name and there are 7 teams named Abra.

Abra
Abra
Abra
Abra
Abra
Abra
Abra
'''

1 Ответ

0 голосов
/ 05 сентября 2018

Вы используете тот же базовый файл sample_csv, что означает, что после того, как вы выполните итерацию, он будет исчерпан и все последующие итераторы будут завершены. Прочитайте данные, затем выполните циклы:

with open("sample_runner_data.csv", "r") as sample_csv:
    sample_csv = csv.DictReader(sample_csv)
    data = list(sample_csv)

for lines in data:
    theLine = lines["team"]
    for line in data:
        if(theLine == line["team"]):
            print(line["team"])
            team.append(line["time"])

Однако, возможно, это не то, что вы ищете, если вы просто постоянно собираете сборы для каждой команды, например ::

data = {}
with open("sample_runner_data.csv", "r") as sample_csv:
    sample_csv = csv.DictReader(sample_csv)
    for line in sample_csv:
        data.setdefault(line['team'], []).append(line['time'])

Теперь data будет содержать team в качестве ключа со всеми time s в качестве значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...