繁体   English   中英

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

[英]Convert list of tuples of several values into dictionary in Python

我有这个清单。

List1 = [(1L, 'Jack', 129L, 37L), (2L, 'Tom', 231L, 23L)]

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

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

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

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

dict构造函数可以处理键/值对列表,但不能处理任意长度序列。 一种简洁的方法是使用生成器表达式对每个子序列进行切片:

Dict1 = dict((sublist[0], sublist[1:]) for sublist in List1)

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

Dict1 = {sublist[0]: sublist[1:] for sublist in List1}

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

这应该工作:

>>> Dict1 = {}
>>> for each in List1:
...     Dict1[each[0]] = [each[1:]]

一个更简洁的单线是

>>> dict((each[0], each[1:]) for each in List1)

在这两种情况下,输出均为:

{1L: [('Jack', 129L, 37L)], 2L: [('Tom', 231L, 23L)]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM