如何将以下列表转换为字典?

时间:2013-06-18 10:14:09

标签: python list dictionary

我有一个这样的清单:

[['ok.txt', 'hello'], [10, 20], ['first_one', 'second_one'], ['done', 'pending']]

我想将此列表转换为字典,如下所示:

{'ok.txt' : ['10', 'first_one', 'done'], 'hello' : ['20', 'second_one', 'pending']}

如何做这样的事情?

3 个答案:

答案 0 :(得分:5)

试试这个:

dict(zip(xs[0], zip(*xs[1:])))

对于列表作为dict的值:

dict(zip(xs[0], map(list, zip(*xs[1:]))))

答案 1 :(得分:0)

>>> lis  = [['ok.txt', 'hello'], [10, 20], ['first_one', 'second_one'], ['done', 'pending']]
>>> keys, values = lis[0],lis[1:]
>>> {key:[val[i] for val in values] 
                                  for i,key in enumerate(keys) for val in values}
{'ok.txt': [10, 'first_one', 'done'], 'hello': [20, 'second_one', 'pending']}

答案 2 :(得分:0)

您可以使用内置的zip功能轻松执行此操作:

list_of_list = [['ok.txt', 'hello'], [10, 20], ['first_one', 'second_one'], ['done', 'pending']]
dict_from_list = dict(zip(list_of_list[0], zip(*list_of_list[1:])))

在此,内部zip(* list_of_list [1:])将列表列表从list_of_list(第一个元素除外)转换为元组列表。元组是保留的顺序,并再次使用所谓的键压缩以形成元组列表,通过dict函数将其转换为正确的字典。

请注意,这将使用元组作为字典中值的数据类型。根据你的例子,单行将给出:

{'ok.txt': (10, 'first_one', 'done'), 'hello': (20, 'second_one', 'pending')}

要获得列表,您必须使用list函数映射内部zip。 (即)改变

zip(*list_of_list[1:]) ==> map(list, zip(*list_of_list[1:]))

有关zip功能的信息,请点击here

编辑:我刚刚注意到答案与Simon给出的答案相同。当我在终端中尝试代码时,西蒙给了它更快的速度,当我发帖时我没有注意到他的答案。