我遇到了问题。
我正在执行SQL命令以获取一些数据。在数据中,我创建了具有相同ID的行。我想要的是将所有具有相同ID的数据放入一个数组中。 这是我所拥有的:
ID Var1 Var2
data = [[1, A, B],
[1, C, D],
[1, E, F],
[2, A, B],
[2, C, D],
[2, E, F]]
如您所见,具有相同ID的行被放入单独的数组中。这就是我想要的:
data = [[1, A, B, C, D, E, F],
[2, A, B, C, D, E, F]]
所以我只想要1个ID,并将具有该ID的所有值放入1个数组中。
这是我的代码:
mycursor.execute("SELECT ID, Var1, Var2 FROM Test_Database")
result = mycursor.fetchall ()
data = []
for row in result :
data.append(row)
print(data)
我在做什么错了?
答案 0 :(得分:1)
也许制作一个以ID为键的字典?
类似这样的东西:
from collections import defaultdict
data_dict = defaultdict(list)
for row in result:
id_ = row[0]
for item in row[1:]:
data[id_].append(item)
答案 1 :(得分:0)
要具有具有相同结构的列表列表:
app/build.gradle
build.gradle
将是您在描述中想要的。
答案 2 :(得分:0)
MySQL的结果以值元组形式返回。每次调用data.append()
时,您只是将该行追加到列表中,因此您将获得一个包含表中所有行的返回值的列表。您所期望的是一个列表,其中唯一的行ID作为第一个元素,而查询返回的所有其他可能的其他列值作为其余元素。
由于无论如何都需要唯一ID,因此应该使用字典:
data_results = {}
for row in results:
row_id = query_results[0]
if row_id in data_results:
data_results[row_id]).extend(query_results[1:])
else:
data_results[row_id] = query_results[1:]
这应该具有预期的效果,尽管它是列表的字典而不是列表的列表。如果您需要该列表保持特定顺序,则建议您在OrderedDict上查找详细信息。