将嵌套列表转换成字典

时间:2019-12-30 23:25:32

标签: list dictionary nested

在这里学习新东西-我整天都在尝试解决问题,但并没有取得太大的成功。这个想法是遍历嵌套列表并返回字典。但是,列表的第一个元素包含字典值的列标题。因此,这是嵌套列表或table_data:

table_data = [
    ["first_name", "last_name", "city", "state"],
    ["Elisabeth", "Gardenar", "Toledo", "OH"],
    ["Jamaal", "Du", "Sylvania", "OH"],
    ["Kathlyn", "Lavoie", "Maumee", "OH"]
]

convert_table(table_data)

我想将嵌套列表转换成字典,如下所示。基本上,我希望函数接受嵌套列表,然后吐出输出,如下所示。

[
    {"first_name": "Elisabeth", "last_name": "Gardenar", "city": "Toledo", "state": "OH"},
    {"first_name": "Jamaal", "last_name": "Du", "city": "Sylvania", "state": "OH"},
    {"first_name": "Kathlyn", "last_name": "Lavoie", "city": "Maumee", "state": "OH"}
]

这是到目前为止我一直在摆弄的一些代码,但是有点卡住了如何使列表的第一个索引的元素重复并成为字典其余部分的值的键

谢谢!

for i in range(len(table_data)):
    for j in table_data[0]:
        print(j)

for i in table_data:
    for j in i:
        print(j)

2 个答案:

答案 0 :(得分:1)

请注意,Python词典天生就是无序的,您可以这样操作:

lst = []
for row in table_data[1:]:
    lst.append(dict(zip(table_data[0],row)))

如果您需要保留订单,请使用OrderedDict,如下所示:

import collections as co

lst_ordered = []
for row in table_data[1:]:
    lst_ordered.append(co.OrderedDict(zip(table_data[0],row)))

答案 1 :(得分:0)

伯尼说对了。现在我要研究它。谢谢。

lst = []
for row in table_data[1:]:
    lst.append(dict(zip(table_data[0],row)))