Как анализировать данные из файла с использованием списков - PullRequest
0 голосов
/ 25 апреля 2019

Вот как должна выглядеть программа , Вот файл данных, который я читаю из Я создаю функцию, которая берет данные анализа из файла. Файл состоит из идентификационного номера продавца, месяца, в котором он совершил продажу, и суммы продажи. Я должен отсортировать их в двумерный список за квартал. У меня возникли проблемы с поиском способа сопоставления идентификационного номера с индексом и последующим добавлением суммы продаж по кварталам.

Это функция, которая считывает файл идентификаторов, работает нормально, просто показывая инициализацию.

def get_IDs(filename):
    idfile = open(filename, 'r')
    #create ID list
    id_list = []
    sales_data = []
    for line in idfile:
        id_list.append(line.strip('\n'))
        sales_data.append([0,0,0,0])
        id_list.sort()       
    idfile.close()       
    return id_list, sales_data

Это функция, с которой я не могу найти способ настройки. Каждая строка файла была разбита на три части информации, которые я просто не могу найти, чтобы отсортировать их.

def process_sales_data(filename, id_list, sales_data):
    datafile = open(filename, 'r')
    for line in datafile:
        data = line.split(' ')
        dataline = data[0] + data[1] + data[2]
        for salesperson in range(len(id_list)):
            for quarter in range(3):

1 Ответ

0 голосов
/ 04 мая 2019

Во-первых, я хочу указать, как оптимизировать ваш код:

  1. вам не нужно читать файл дважды, вы можете просто выполнить обработку данных один раз и сохранить в нужном вам формате..
  2. сортировка по идентификатору здесь не обязательна, вы можете использовать dict для сохранения четырехзначной суммы по идентификатору.

Вот пример кода:

def process_sales_data(filename):
    sales = {}
    with open(filename, 'r') as f:
        for line in f:
            id, month, sale = line.strip('\n').split(' ')
            sales.setdefault(id, [0] * 4)[(int(month) - 1) // 4] += float(sale)
    return sales

Если вы хотите вывести отсортированные по идентификатору, вы можете использовать sorted, чтобы диктовать.
Надеюсь, что это поможет вам, и прокомментируйте, если у вас есть дополнительные вопросы.:)

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