将长度x * n的值分配给字典中长度为n的标头列表

时间:2020-11-10 22:13:23

标签: python list dictionary

我为自己创建了以下问题:

对于长度为n的标头列表和长度为n * x的另一个值列表,其中x是每个标头下的值数, 如何创建每个标头对应于x个数据值的字典?

这是我要实现的目标的一个示例:

headers = ['a','b','c'] # n = 3
data = [1,2,3,4,5,6,7,8,9] # length = 9, so x = len(data)/n = 3 (each header has 3 values)

dictionary = {}

我希望输出看起来像这样:

{'a': [1,4,7], 'b': [2,5,8], 'c': [3,6,9]}

我将使用一组n = 12,x = 30的数据(因此12个标题表中的每一列都有30个值)。

为解决我的示例,我编写了以下代码:

n = len(headers)
for header in headers:
    dictionary[header] = []

for num in range(0,n):
    subList = [data[num+0*n],data[num+1*n],data[num+2*n]]
    print(num,subList)
    dictionary[headers[num]] = subList

print(dictionary)

是否有更好的方法?我仍然必须手动添加“ 1 * n”或“ 2 * n”,这对于较大的n是不合理的。该数字与进入字典的列表元素相关联(因此列表中的元素0 = 0 * n,列表中的元素1 = 1 * n等)

1 个答案:

答案 0 :(得分:1)

您可以遍历列表datax次,并将data[num+i*n]添加到subList。因此,您希望subList的定义如下:

subList = []
for i in range(0,x):
    subList+=[data[num+i*n]]