Python – 将不均匀的列表转换为记录
有时,在使用记录时,我们可能会遇到一个问题,即我们在一个列表中有键,而在另一个列表中有值。但有时,值可以按顺序排列多个,例如特定科目的分数或分数。这类问题可能发生在学校规划和发展领域。让我们讨论可以执行此任务的某些方式。
方法 #1:使用字典理解 + enumerate()
+ 列表切片
上述功能的组合可以用来解决这个问题。在此,我们使用字典理解进行迭代,并通过切片提取记录值来枚举并形成所需的结果。
# Python3 code to demonstrate working of
# Convert Uneven Lists into Records
# Using dictionary comprehension + enumerate() + list slicing
# initializing lists
test_list1 = ['Nikhil', 'Akash', 'Akshat']
test_list2 = [5, 6, 7, 8, 2, 3, 12, 2, 10]
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
# Convert Uneven Lists into Records
# Using dictionary comprehension + enumerate() + list slicing
temp = len(test_list2) // len(test_list1)
res = {key: test_list2[idx :: temp] for idx, key in enumerate(test_list1)}
# printing result
print("The paired data dictionary : " + str(res))
The original list 1 is : [‘Nikhil’, ‘Akash’, ‘Akshat’]
The original list 2 is : [5, 6, 7, 8, 2, 3, 12, 2, 10]
The paired data dictionary : {‘Nikhil’: [5, 8, 12], ‘Akshat’: [7, 3, 10], ‘Akash’: [6, 2, 2]}
方法 #2:使用列表理解 + zip()
也可以使用上述功能解决此任务。在此,我们使用列表推导来构建累积分数列表。在最后一步中,我们使用 zip() 将两个列表绑定在一起。
# Python3 code to demonstrate working of
# Convert Uneven Lists into Records
# Using list comprehension + zip()
# initializing lists
test_list1 = ['Nikhil', 'Akash', 'Akshat']
test_list2 = [5, 6, 7, 8, 2, 3, 12, 2, 10]
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
# Convert Uneven Lists into Records
# Using list comprehension + zip()
temp = len(test_list2) // len(test_list1)
res = [test_list2[idx :: temp] for idx in range(0, len(test_list1))]
res = dict(zip(test_list1, res))
# printing result
print("The paired data dictionary : " + str(res))
The original list 1 is : [‘Nikhil’, ‘Akash’, ‘Akshat’]
The original list 2 is : [5, 6, 7, 8, 2, 3, 12, 2, 10]
The paired data dictionary : {‘Nikhil’: [5, 8, 12], ‘Akshat’: [7, 3, 10], ‘Akash’: [6, 2, 2]}