сортировать данные с помощью словаря, объектно-ориентированной концепции с Pyhon - PullRequest
0 голосов
/ 26 марта 2019

Я реализовал этот пример обычным способом, но я хочу сделать это с концепцией OPPS с Python, так как это сделать. Я сталкиваюсь с трудностями при использовании упс.

например. Укажите количество продуктов, которые компания приобрела у разных поставщиков в порядке возрастания на основе даты. Если один и тот же продукт приобретен у того же поставщика в ту же дату, он должен быть объединен во время выпуска.

sample output
------
Supplier A
01-01-2019      Product A       10
02-02-1019      Product B       5
03-03-2019      Product A       15

Supplier B
01-01-2019      Product A       8
31-01-2019      Product B       20

Классы использования и объекты использования - Поставщик, Компания, Продукт

Я сделал это обычным способом (программа внизу), но я хочу сделать это, используя концепцию чистого упса и используя объект Product .. and Supplier .. .., как это сделать ??

from itertools import groupby
from operator import itemgetter
class Product:
#init
def __init__(self, date=0, product_name=0,qty=0,supplier=0):
    self.product_name = product_name
    self.date = date
    self.qty = qty
    self.supplier= supplier
    #make self.my_dict
    self.my_dict={}
    self.my_list = []

def purchase(self, date, product_name, qty, supplier_name ):
    self.my_list.append([supplier_name,date,product_name,qty,])
    '''
    #make a new key if needing
     try:
         #add the data to the list
         self.my_dict[supplier_name].append([date,product_name,qty])
     except:
         #make a new list with data
         self.my_dict[supplier_name] = [[date,product_name,qty]]
    '''
 def calculation(self):
    # sort by supplier_name and group items by supplier_name,
  date,     product_name
    x = groupby(sorted(self.my_list, key=itemgetter(0)), itemgetter(slice
  (None, 3)))
    # sum the quantities
    y = [i + [sum(map(itemgetter(3), j))] for i, j in x]
    # group items by supplier
    z = [(i, list(map(itemgetter(slice(1, None)), j))) for i, j in groupby
 (y, itemgetter(0))]
    # output
    for supplier, values in z:
        print("{0}:".format(supplier))
        print("\n".join(map(str, values)))

choice=None
p=Product()
while True:
choice=int(input("1 for the add record\n2 For the display result.\n"))
if choice == 1:
    product_name=input("Enter the product name\n")
    qty = int(input("Enter the qty.\n"))
    date= input("Enter the date")
    supplier_name = input("Enter the supplier name.\n ")
    p.purchase(date,product_name,qty, supplier_name)

elif choice == 2:
    p.calculation()
...