[英]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.