我有这个清单。
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
该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将每个子列表的第一个元素作为键,将其他所有内容都作为值-字典对每个键都有一个值,即使该值本身可能有多个元素也是如此。
| 归档时间: |
|
| 查看次数: |
1587 次 |
| 最近记录: |