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

时间:2018-11-12 13:05:45

标签: 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]。我不确定如何执行此操作,但是将其保存为仍然可以保留到数据库表的格式

3 个答案:

答案 0 :(得分:0)

如果我理解正确,则可以使用zip做类似的事情:

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]]

另一种选择是使用map函数和zip

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

答案 1 :(得分:0)

您可以将字典与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]

答案 2 :(得分:0)

如果您不想使用任何第三方库(例如熊猫),则可以使用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]})