多个列表到字典

时间:2014-12-18 18:24:51

标签: python list dictionary

我希望转换列表如:

idx = ['id','m','x','y','z']
a = ['1, 1.0, 1.11, 1.11, 1.11']
b = ['2, 2.0, 2.22, 2.22, 2,22'] 
c = ['3, 3.0, 3.33, 3.33, 3.33']
d = ['4, 4.0, 4.44, 4.44, 4.44'] 
e = ['5, 5.0, 5.55, 5.55, 5.55']

进入字典:

dictlist = {
    'id':[1,2,3,4,5],
    'm':[1.0,2.0,3.0,4.0,5.0],
    'x':[1.11,2.22,3.33,4.44,5.55],
    'y':[1.11,2.22,3.33,4.44,5.55],
    'z':[1.11,2.22,3.33,4.44,5.55]
}

但我希望能够为更长的一组列表执行此操作>>每个列表6个元素。所以我假设一个函数最好能够为idx列表中的元素len创建dict。

**编辑: 回应g.d.d.c:

I had tried something like:

def make_dict(indx):
    data=dict()
    for item in xrange(0,len(indx)):
        data.update({a[item]:''})
    return data

data = make_dict(idx)

哪个有效:

{'id': '', 'm': '', 'x': '', 'y': '', 'z': ''}

然后将每个值添加到字典中成为一个问题。

4 个答案:

答案 0 :(得分:2)

result = {}
keys = idx
lists = [a, b, c, d, e]
for index, key in enumerate(keys):
    result[key] = []
    for l in lists:
        result[key].append(l[index])

答案 1 :(得分:1)

作为单一理解

首先将您的列表{a,b,c,d,e,...}分组到列表列表中

dataset = [a,b,c,d,e]
idx = ['id','m','x','y','z']
d = { k: [v[i] for v in dataset] for i,k in enumerate(idx) }

最后一行通过使用dict键的值枚举idx来构建字典,并使用其索引来选择每个数据样本的正确列。

只要每个列表的长度与idx

相同,理解就会起作用,无论字段数是多少

答案 2 :(得分:1)

你可以试试这个:

idx = ['id','m','x','y','z']
a = [1, 1.0, 1.11, 1.11, 1.11]
b = [2, 2.0, 2.22, 2.22, 2,22] 
c = [3, 3.0, 3.33, 3.33, 3.33]
d = [4, 4.0, 4.44, 4.44, 4.44] 
e = [5, 5.0, 5.55, 5.55, 5.55]


dictlist =  {x[0] : list(x[1:]) for x in zip(idx,a,b,c,d,e)}

print dictlist

答案 3 :(得分:0)

answer = {}
for key, a,b,c,d,e in zip(idx, map(lambda s:[float(i) for i in s.split(',')], [a,b,c,d,e])):
    answer[key] = [a,b,c,d,e]