Skip to main content
 首页 » 编程设计

python之在python列表中填充缺失数据

2025年05月04日14bhlsheji

我有一个列表字典,每个列表都有不同数量的元素。我想将默认值添加到每个列表的开头,使它们的大小都相同。

所以,如果我从...开始

data = {'data1': [1,2,3], 'data2': [12,23,34,45,44], 'data3': [7,8,9,10], 'data4': [71, 72, 73, 74, 75, 76, 78], 'data5': []} 

我想结束:

data1: [0, 0, 0, 0, 1, 2, 3] 
data2: [0, 0, 12, 23, 34, 45, 44] 
data3: [0, 0, 0, 7, 8, 9, 10] 
data4: [71, 72, 73, 74, 75, 76, 78] 
data5: [0, 0, 0, 0, 0, 0, 0] 

我想出了以下代码:

maxlen = 0 
for d in data: 
    if maxlen < len(data[d]): 
        maxlen = len(data[d]) 
 
for d in data: 
    if len(data[d]) < maxlen: 
        data[d] = [0] * (maxlen - len(data[d])) + data[d] 

这行得通,但是有更好的方法吗?

请您参考如下方法:

您可以找出哪个列表最长,然后在字典理解中用零填充其他每个列表。

>>> longest = max(len(i) for i in data.values()) 
>>> data = {key: [0]*(longest-len(value)) + value for key,value in data.items()} 
>>> data 
{'data5': [0, 0, 0, 0, 0, 0, 0], 
 'data1': [0, 0, 0, 0, 1, 2, 3], 
 'data4': [71, 72, 73, 74, 75, 76, 78], 
 'data3': [0, 0, 0, 7, 8, 9, 10], 
 'data2': [0, 0, 12, 23, 34, 45, 44]}