Словарь - это пара ключ-значение (как, я уверен, вы знаете).Если вы когда-нибудь попытаетесь записать в словарь ключ, который уже существует в словаре, то словарь перезапишет значение для этого ключа.
Пример:
d = dict()
d[1] = 'a' # d = {1: 'a'}
d[1] = 'b' # d = {1: 'b'}
Ваш проект может показаться хорошим вариантом использования namedtuple
в Python.A namedtuple
- это в основном легкий класс / объект.Мой пример кода может быть неправильным, потому что я не знаю, как работает ваш цикл for
(комментирование помогает всем).То, что здесь сказано, является примером.
Я даю эту рекомендацию только потому, что dictionaries
потребляет на 33% больше памяти, чем объекты, которые они содержат (хотя они гораздо быстрее).
from collections import namedtuple
Customer = namedtuple('Customer', 'name products')
Product = namedtuple('Product', 'growth amount')
customers = []
for col in pivotdf.columns:
products = []
growthlist = []
amountlist = []
first = True
TP_Name, Service_Level_1 = col.split('___')
for row in pivotdf[col]:
if first == True:
past = row + .00001
first = False
if row == 0 and past < .0001 :
growth = 0
elif row != 0 and past == .00001:
growth = 100.2014
else:
current = row
growth = (current - past) / past
growth = round(growth, 4)
growthlist.append(growth)
past = row + .00001
amountlist.append(row)
cur_product = Product(growth=growthlist, amount=amountlist) # Create a new product
products.append(cur_product) # Add that product to our customer
# Create a new customer with our products
cur_customer = Customer(name=TP_Name, products=products)
customers.append(cur_customer) # Add our customer to our list of customers
Здесь customers
- это список клиентов namedtuples
, которые мы можем использовать в качестве объектов.Например, вот как мы можем их распечатать.
for customer in customers:
print(customer.name, customer.products) # Print each name and their products
for growth, amount in customer.products:
print(growth, amount) # Print growth and amount for each product.