将多个值的元组列表转换为Python中的字典

use*_*486 2 python python-2.7

我有这个清单。

List1 = [(1L, 'Jack', 129L, 37L), (2L, 'Tom', 231L, 23L)]
Run Code Online (Sandbox Code Playgroud)

我想将其转换为如下所示的字典;

Dict1 = {'1L': [('Jack', 129L, 37L)], '2L': [('Tom', 231L, 23L)]}
Run Code Online (Sandbox Code Playgroud)

我尝试过,Dict1 = dict(List1)但是出现类似“字典更新序列元素#0的长度为XX ...”的错误。

如何在Python中完成?我正在使用Python 2.7

Pet*_*per 5

dict构造可键/值对的列表,但不是在工作arbitary长序列的列表。一种简洁的方法是使用生成器表达式对每个子序列进行切片:

Dict1 = dict((sublist[0], sublist[1:]) for sublist in List1)
Run Code Online (Sandbox Code Playgroud)

因为您使用的是2.7,所以还可以使用字典理解:

Dict1 = {sublist[0]: sublist[1:] for sublist in List1}
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以执行此操作,但是我认为这是最Python化的-支持该语法(2.7及更高版本)的版本的dict理解,或较早版本的生成器表达式。在这两种形式中,您都明确声明dict将每个子列表的第一个元素作为键,将其他所有内容都作为值-字典对每个键都有一个值,即使该值本身可能有多个元素也是如此。