Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 字典中的多个列表_Python_List_Dictionary - Fatal编程技术网

Python 字典中的多个列表

Python 字典中的多个列表,python,list,dictionary,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]

我希望转换如下列表:

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': ''}

但是,在字典中添加每一个值就成了一个问题。

作为一个单一的理解

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])
首先把你的列表{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相同,理解都会起作用。您可以尝试以下方法:

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

您是否已初步尝试获取所需的数据结构?大多数情况下,如果您向我们展示(非工作代码),我们可以对其进行改进,而不仅仅是要求他人为您执行。您使用的是哪一版本的python?这可能是一个单行理解-查看
enumerate()
idx
是一个包含5个字符串的列表,而
a
-
e
是每个包含一个字符串的列表。对吗?inspectorG4dget,我使用的是Python2.7谢谢,如果a、b、c、d、e是多个值的列表,这很好。谢谢。现在,如果a,b,c,d,e都是一个a=['1,1.0,1.11,1.11','2,2.22,2,22','3,3.0,3.33,3.33,3.33','4,4.0,4.44,4.44','5,5.0,5.55,5.55','的列表怎么办?这是可以做到的,但你正在解决的是另一个问题<代码>数据集=[[float(i)for i in l.split(“,”)for l in a]将替换第一行。抱歉,您刚刚意识到OP的值是字符串。我想我们都错过了。为什么a、b、c、d、e都是一个包含一个元素的列表?这也(仅)适用于a、b、c、d、e是多个值的列表的情况。谢谢
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]