如何从列表列表创建嵌套字典

How to create a nested dictionary from a list of lists

我想从列表列表中创建一个嵌套字典。

输入:

[[a, b, c], [1, 'a', 'x'], [2, 'b', 'y']]

主字典必须有索引作为键。第一个列表包含要作为键传递给嵌套字典的项,以下列表包含要作为值传递的项:

期望输出:

{0: {a:1, b:'a', c:'x'},
 1: {a:2, b:'b', c:'y'}}

我尝试了以下代码,但它没有 return 每个项目都作为嵌套字典:

output = {a[0]: list(a[1:]) for a in zip(*rows)}

如有任何帮助,我们将不胜感激。谢谢

这是一个您可以尝试的解决方案,

print({
    k: v for k, v in enumerate(dict(zip(val[0], v)) for v in val[1:])
})

{0: {'a': 1, 'b': 'a', 'c': 'x'}, 1: {'a': 2, 'b': 'b', 'c': 'y'}}

为什么不试试:

>>> {i: {x: y for x, y in zip(lst[0], v)} for i, v in enumerate(lst[1:])}
{0: {'a': 1, 'b': 'a', 'c': 'x'}, 1: {'a': 2, 'b': 'b', 'c': 'y'}}
>>> 

或者简单地说:

>>> {i: dict(zip(lst[0], v)) for i, v in enumerate(lst[1:])}
{0: {'a': 1, 'b': 'a', 'c': 'x'}, 1: {'a': 2, 'b': 'b', 'c': 'y'}}
>>> 

兄弟试试这个

dictionary ={j: dict(zip(lst[0], i)) for j, i in enumerate(lst[1:])}
print(dictionary)

尝试

l = [['a', 'b', 'c'], [1, 'a', 'x'], [2, 'b', 'y']]
{
    i: dict(zip(l[0], v)) for i, v in enumerate(l[1:])
}

找到一种使用叉积的有趣方法

import itertools

l = [['a', 'b', 'c'], [1, 'a', 'x'], [2, 'b', 'y']]

keys = l[:1]
values_list = l[1:]

# {0: {'a': 1, 'b': 'a', 'c': 'x'}, 1: {'a': 2, 'b': 'b', 'c': 'y'}}
dict(
    # [(0, {'a': 1, 'b': 'a', 'c': 'x'}), (1, {'a': 2, 'b': 'b', 'c': 'y'})]
    enumerate(
        # [{'a': 1, 'b': 'a', 'c': 'x'}, {'a': 2, 'b': 'b', 'c': 'y'}]
        map(
            lambda x: dict(zip(*x)),
            itertools.product(keys, values_list) # [(['a', 'b', 'c'], [1, 'a', 'x']), (['a', 'b', 'c'], [2, 'b', 'y'])]
        )
    )
)