Django - 无法将整数记录添加到字典中的整数?
Django - can't add ints records to ints in dictionaries?
这一定是我的误会——我是来这里学习的。感谢任何帮助。
我在尝试添加循环遍历一组 Django 对象记录的整数时遇到类型错误,我不知道为什么。
我有一个充满日期戳值的数据库。我想将适当字段的值加在一起以获得每日总计,同时承认不会有每个产品每天的记录。例如。 :
Product A has sales on May 11, 12, and 14
Product B has sales on May 6, 11, 14 and 19
我最终想要的是一组连续的销售总额,然后我可以绘制图表。对于这张图,我不关心日期,我想要趋势。我已经对单个产品进行了处理,但我正在尝试使其与产品集合的总销售额一起使用。
我觉得这是很标准的东西。
我的记录是这样的:
Data_Record:
product_id | product_family | datetime | daily_sales | daily_profit
当前解决方案
product_family_totals = {}
for Data_Record in Records_From_Table:
if Data_Record.product_family not in product_family_totals.keys():
product_family_total[Data_Record.product_family] = {}
if Data_Record.date not in product_family_totals[Data_record.product_family]:
product_family_total[Data_record.product_family][Data_Record.date] = {
'sales' : Data_Record.daily_sales,
'profit': Data_record.daily_profit }
else:
product_family_total[Data_record.product_family][Data_Record.date]['sales'] += Data_Record.daily_sales
product_family_total[Data_record.product_family][Data_Record.date]['profit'] += Data_Record.daily_profit
当我这样做时,我得到这个错误:
TypeError: unsupported operand type(s) for +=: 'int' and 'tuple'
这真的很奇怪,因为当我检查每个项目的类型时,它们都是整数。
print(f"Data_Record.daily_sales is {type(Data_Record.daily_sales)}")
print(f"product_family->daily_sales {type( product_family_total[Data_record.product_family][Data_Record.date]['sales'])}")
结果
Data_Record.daily_sales is type <class 'int'>
product_family->daily_sales is type <class 'int'>
糟糕的工作
我可以将这些值加在一起并像这样将它们放入我的结果字典中
...
else:
x = product_family_total[Data_record.product_family][Data_Record.date]['sales']
y = Data_Record.daily_sales
z = x + y
product_family_total[Data_record.product_family][Data_Record.date]['sales'] = z
...但这是错误的。
我承认我是一个年长的编码员,但是有人可以帮助我了解这里发生的事情吗?这对我来说完全是疯子!
你是不是不小心留下了任何 .或者,在你的代码中?我曾经遇到过这个问题,原因是:
Python 3.8.3 (default, May 17 2020, 14:48:56) [GCC] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 3
>>> y = 4
>>> x += y,
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +=: 'int' and 'tuple'
这一定是我的误会——我是来这里学习的。感谢任何帮助。
我在尝试添加循环遍历一组 Django 对象记录的整数时遇到类型错误,我不知道为什么。
我有一个充满日期戳值的数据库。我想将适当字段的值加在一起以获得每日总计,同时承认不会有每个产品每天的记录。例如。 :
Product A has sales on May 11, 12, and 14
Product B has sales on May 6, 11, 14 and 19
我最终想要的是一组连续的销售总额,然后我可以绘制图表。对于这张图,我不关心日期,我想要趋势。我已经对单个产品进行了处理,但我正在尝试使其与产品集合的总销售额一起使用。
我觉得这是很标准的东西。
我的记录是这样的:
Data_Record:
product_id | product_family | datetime | daily_sales | daily_profit
当前解决方案
product_family_totals = {}
for Data_Record in Records_From_Table:
if Data_Record.product_family not in product_family_totals.keys():
product_family_total[Data_Record.product_family] = {}
if Data_Record.date not in product_family_totals[Data_record.product_family]:
product_family_total[Data_record.product_family][Data_Record.date] = {
'sales' : Data_Record.daily_sales,
'profit': Data_record.daily_profit }
else:
product_family_total[Data_record.product_family][Data_Record.date]['sales'] += Data_Record.daily_sales
product_family_total[Data_record.product_family][Data_Record.date]['profit'] += Data_Record.daily_profit
当我这样做时,我得到这个错误:
TypeError: unsupported operand type(s) for +=: 'int' and 'tuple'
这真的很奇怪,因为当我检查每个项目的类型时,它们都是整数。
print(f"Data_Record.daily_sales is {type(Data_Record.daily_sales)}")
print(f"product_family->daily_sales {type( product_family_total[Data_record.product_family][Data_Record.date]['sales'])}")
结果
Data_Record.daily_sales is type <class 'int'>
product_family->daily_sales is type <class 'int'>
糟糕的工作
我可以将这些值加在一起并像这样将它们放入我的结果字典中
...
else:
x = product_family_total[Data_record.product_family][Data_Record.date]['sales']
y = Data_Record.daily_sales
z = x + y
product_family_total[Data_record.product_family][Data_Record.date]['sales'] = z
...但这是错误的。
我承认我是一个年长的编码员,但是有人可以帮助我了解这里发生的事情吗?这对我来说完全是疯子!
你是不是不小心留下了任何 .或者,在你的代码中?我曾经遇到过这个问题,原因是:
Python 3.8.3 (default, May 17 2020, 14:48:56) [GCC] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 3
>>> y = 4
>>> x += y,
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +=: 'int' and 'tuple'