我为自己创建了以下问题:
对于长度为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等)
答案 0 :(得分:1)
您可以遍历列表data
,x
次,并将data[num+i*n]
添加到subList
。因此,您希望subList
的定义如下:
subList = []
for i in range(0,x):
subList+=[data[num+i*n]]