Python,MYSQL 如何将两个单独列表中的两列加在一起(数字总和)到一个新列表中? [关闭]
Posted
技术标签:
【中文标题】Python,MYSQL 如何将两个单独列表中的两列加在一起(数字总和)到一个新列表中? [关闭]【英文标题】:Python, MYSQL How can I add together (sum of the numbers) two columns from two separate list into a new one? [closed] 【发布时间】:2020-12-20 18:48:46 【问题描述】:我有两个列表,result6 和 result7。 结果6看起来像这样:
(2, Decimal('2'))
(17, Decimal('1'))
(16, Decimal('0'))
(15, Decimal('1'))
(9, Decimal('0'))
(5, Decimal('1'))
(4, Decimal('2'))
(13, Decimal('2'))
(18, Decimal('0'))
(7, Decimal('0'))
(12, Decimal('0'))
(11, Decimal('0'))
(10, Decimal('0'))
(3, Decimal('1'))
(1, Decimal('1'))
(14, Decimal('0'))
(8, Decimal('1'))
(6, Decimal('0'))
结果 7 如下所示:
(2, Decimal('0'))
(17, Decimal('1'))
(16, Decimal('1'))
(15, Decimal('1'))
(9, Decimal('2'))
(5, Decimal('0'))
(4, Decimal('0'))
(13, Decimal('0'))
(18, Decimal('0'))
(7, Decimal('1'))
(12, Decimal('0'))
(11, Decimal('1'))
(10, Decimal('0'))
(3, Decimal('0'))
(1, Decimal('0'))
(14, Decimal('1'))
(8, Decimal('0'))
(6, Decimal('0'))
两个列表中的第一列是引用(用于团队),所以我想创建一个新列表(=result8),交换两列(因为 mysql 更新)并加在一起(它们的总和)result6和 result7 的十进制数字在 result8 的第一列。
my_sq14 = "SELECT H_code, SUM(Home_win) FROM bundesliga_2020_2021_2 GROUP BY H_code"
my_cursor.execute(my_sq14)
result6 = my_cursor.fetchall()
print("This is result6:")
for row in result6:
print(row)
my_sq15 = "SELECT H_code, SUM(Away_win) FROM bundesliga_2020_2021_2 GROUP BY H_code"
my_cursor.execute(my_sq15)
result7 = my_cursor.fetchall()
print("This is result7:")
for row in result7:
print(row)
result8 = []
while k < 18:
result8.append((result6[k][1], result6[k][0]))
k += 1
print("This is result8 first:")
for row in result8:
print(row)
while k < 18:
result8[k][0] = result6[k][1] + result7[k][1]
k += 1
print("This is result8 second:")
for row in result8:
print(row)
我没有收到错误,但什么也没发生,一切都保持不变,但例如在第 17 列,我需要在另一列上使用 2,而不是 1。 你能帮我吗,我哪里错了?
交换后的结果8:
This is result8 first:
(Decimal('2'), 2)
(Decimal('1'), 17)
(Decimal('0'), 16)
(Decimal('1'), 15)
(Decimal('0'), 9)
(Decimal('1'), 5)
(Decimal('2'), 4)
(Decimal('2'), 13)
(Decimal('0'), 18)
(Decimal('0'), 7)
(Decimal('0'), 12)
(Decimal('0'), 11)
(Decimal('0'), 10)
(Decimal('1'), 3)
(Decimal('1'), 1)
(Decimal('0'), 14)
(Decimal('1'), 8)
(Decimal('0'), 6)
尝试相加后的结果8:
This is result8 second:
(Decimal('2'), 2)
(Decimal('1'), 17)
(Decimal('0'), 16)
(Decimal('1'), 15)
(Decimal('0'), 9)
(Decimal('1'), 5)
(Decimal('2'), 4)
(Decimal('2'), 13)
(Decimal('0'), 18)
(Decimal('0'), 7)
(Decimal('0'), 12)
(Decimal('0'), 11)
(Decimal('0'), 10)
(Decimal('1'), 3)
(Decimal('1'), 1)
(Decimal('0'), 14)
(Decimal('1'), 8)
(Decimal('0'), 6)
【问题讨论】:
旁注:您并没有真正披露您的架构(您应该这样做)但名称bundesliga_2020_2021_2
让我猜猜该表存储了 2020 赛季德甲联赛的比赛结果/2021,可能是 2. 德甲。我猜还有其他表具有相同的架构但不同的季节和班级。如果这是真的,您应该修复您的架构。应该只有一个这样的表格,并且季节和班级应该在该表格的列中表示。关系表不是电子表格,它们代表关系。
我的模式是这样的:一个赛季中的一个冠军(现在是德甲)所有的比赛(但只是德甲 1.)在一张桌子上。有错吗?
如果下一季将进入另一张桌子,那么是的,那是错误的。如果都在一个表中就可以了,只是表名有点误导。
【参考方案1】:
我不明白你为什么要在 Python 中这样做。为什么不直接在数据库中生成预期的结果集?
select h_code, sum(home_win) as home_win, sum(away_win) as away_win,
sum(home_win) + sum(away_win) as total_wins
from bundesliga_2020_2021_2
group by h_code
【讨论】:
谢谢!因为我还在学习这个东西,仍然是一些时候,当我不明白的时候,现在,有一些结果,例如总和中不计入的结果,但是在表格中,有一个胜利......以上是关于Python,MYSQL 如何将两个单独列表中的两列加在一起(数字总和)到一个新列表中? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在具有相同元素的两个 Python 列表上执行 MYSQL INNER JOIN?