📜  Python – 将不均匀的列表转换为记录(1)

📅  最后修改于: 2023-12-03 14:46:10.200000             🧑  作者: Mango

Python – 将不均匀的列表转换为记录

如果您有一组不均匀的列表,也就是说列表中的每个元素的长度不同,接下来您将学习如何将这样的列表转换成记录。

这里是一个示例列表:

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'值。

注意事项:此函数假定每个集合中的项目在记录中有可能包含空值。