从列表中一次添加一行到新对象

2024-09-22 18:32:29 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我创建一个列表来保存一列,那么每个列将是一个数据库表。如何循环ID列表,一次向新对象添加一行。因此,每个对象将为一个数据库表保留一行。你知道吗

示例列表

ListID[1,2,3,4,5]
List1[34,56,34,345,55]
list2[644,64,232,44,1]
list3[622,12,44,55,01]

然后我想创建一个函数来遍历ListID并创建一个list对象,例如,[1, 34, 644, 622]将是第一个对象,然后是[2, 56, 64, 12]。我不知道如何执行这个,但保持它的格式仍然可以持久化到数据库表中


Tags: 对象函数id数据库示例列表格式list
3条回答

可以将dictionary与zip结合使用,这样还可以使用ListID检索数据:

ListID = [1,2,3,4,5]
List1 = [34,56,34,345,55]
List2 = [644,64,232,44,1]
List3 = [622,12,44,55,1]
dictObj = {}

for ID, l1, l2, l3 in zip(ListID, List1, List2, List3):
    dictObj[f'{ID}'] = [ID, l1, l2, l3]

如果您不想使用任何第三方库(如pandas),可以使用defaultdict实现一个简单的实现:

from collections import defaultdict

dd = defaultdict(list)

listID = [1,2,3,4,5]
list1 = [34,56,34,345,55]
list2 = [644,64,232,44,1]
list3 = [622,12,44,55,1]

for idx, c1, c2 in zip(listID,list1, list2):
    dd[idx].extend([c1, c2])

dd
# defaultdict(list,
#            {1: [34, 644],
#             2: [56, 64],
#             3: [34, 232],
#             4: [345, 44],
#             5: [55, 1]})


for idx, item in zip(listID,list3):
    dd[idx].append(item)

dd
# defaultdict(list,
#            {1: [34, 644, 622],
#             2: [56, 64, 12],
#             3: [34, 232, 44],
#             4: [345, 44, 55],
#             5: [55, 1, 1]})

如果我理解正确,您可以使用^{}执行类似操作:

ListID = [1,2,3,4,5]
List1 = [34,56,34,345,55]
list2 = [644,64,232,44,1]
list3 = [622,12,44,55,1]

objectList = [list(elem) for elem in zip(ListID,List1,list2,list3)]
print(objectList)

输出:

[[1, 34, 644, 622], [2, 56, 64, 12], [3, 34, 232, 44], [4, 345, 44, 55], [5, 55, 1, 1]]

另一种方法是使用^{}函数和zip

objectList = list(map(lambda elem: list(elem), zip(ListID,List1,list2,list3)))

相关问题 更多 >