📅  最后修改于: 2023-12-03 14:46:10.200000             🧑  作者: Mango
如果您有一组不均匀的列表,也就是说列表中的每个元素的长度不同,接下来您将学习如何将这样的列表转换成记录。
这里是一个示例列表:
my_list = [['John', 24, 'male'], ['Alice', 32, 'female', 'developer'], ['Bob', 19, 'male', 'intern', 'sales']]
要将这个列表转换为记录,首先需要查找列表中最长的子列表。然后,在这种情况下,你可以使用zip函数将列表中的项打包为一个元组。
接下来是实现记录转换的代码:
def convert_to_records(my_list):
# find the length of the longest sublist
max_len = max(len(sublist) for sublist in my_list)
# create a list of empty dictionaries, one for each sublist
output = [{} for _ in range(len(my_list))]
# iterate over each sublist
for i, sublist in enumerate(my_list):
# iterate over each item in the sublist
for j, item in enumerate(sublist):
# create a key/value pair in the output dictionary
key = 'field_{}'.format(j+1)
output[i][key] = item
return output
这个函数将输出以下记录列表:
[{'field_1': 'John', 'field_2': 24, 'field_3': 'male', 'field_4': None, 'field_5': None},
{'field_1': 'Alice', 'field_2': 32, 'field_3': 'female', 'field_4': 'developer', 'field_5': None},
{'field_1': 'Bob', 'field_2': 19, 'field_3': 'male', 'field_4': 'intern', 'field_5': 'sales'}]
如您所见,函数将每个子列表转换为一个记录,并为其中的每个项目创建一个带有相应值的键。
最后,如果某些子列表比其他子列表短,则为每个缺少的项添加'None'值。
注意事项:此函数假定每个集合中的项目在记录中有可能包含空值。