Возврат словаря из файла

#file #class #dictionary #python-3.4

#файл #класс #словарь #python-3.4

Вопрос:

Я написал этот код, определяющий класс

 class OrderRecord:
"""Defines an OrderRecord class, suitable for use in keeping track of order records"""
    import tools2
    def __init__(self, string):
        """Creates a new OrderRecord object"""
        string = string.split(',')
        self.date = string[0]
        self.location = string[1]
        self.name = string[2]
        self.colour = string[3]
        self.order_num = string[4]
        self.cost = 0


    def cost_of_order(self):
        """Creates a list of the name and adds up the cost of each letter"""
        letter = list(self.name)
        for let in letter:
            self.cost = self.cost   self.tools2.letter_price(let, self.colour)
        return self.cost


    def __str__(self):
        """Calls the cost_of_order function and returns the split string in the required format"""
        self.cost = self.cost_of_order()
        return("Date:      {0}nLocation:  {1}nName:      {2}nColour:    
    {3}nOrder Num: {4}nCost:      {5:.2f}".format(self.date, self.location, 
    self.name, self.colour, self.order_num, self.cost))
  

Теперь мне нужно написать функцию, которая считывает файл, содержащий следующее:

 20130902,Te Rakipaewhenua,Vinas,parauri,8638
20130909,Te Papaioea,McClary,kikorangi,11643
20131215,Kapiti,Labrie,kikorangi,65291
20141106,Waihopai,Labrie,ma,57910
  

и возвращает словарь, который имеет местоположение в качестве ключа и списки OrderRecords в качестве значений.

Я знаю, что это не слишком сложная задача, но я застрял на этом некоторое время, потому что я не могу понять, что для этого делать.

Любая помощь будет оценена.

Комментарии:

1. Пожалуйста, исправьте отступ в коде. Какой столбец в файле описывает местоположение?

2. Извините, это второй столбец.

Ответ №1:

Может быть, что-то вроде этого. Это не решение, но в нем есть то, что вам нужно, с некоторыми изменениями.

 import collections    

dct_result = collections.defaultdict(list)
for line in open('file_path'):
    fields = line.split(',')
    # index 1 being the second column
    dct_result[field(1)].append(OrderRecord( some args ))