Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在元组字典中创建列表列表_Python - Fatal编程技术网

Python 如何在元组字典中创建列表列表

Python 如何在元组字典中创建列表列表,python,Python,例如,我有一个列表列表 res = [[None,'A','B'],[19980228, 'd1', 't1'],[19980302, 'd2', 't2'],[19980303, 'd3', 't3']] 现在我需要将上面的结果框成元组列表字典 {'A': [(19980228, 'd1'), (19980302, 'd2'), (19980303, 'd3')], 'B': [(19980228, 't1'), (19980302, 't2'), (19980303, 't3')]}

例如,我有一个列表列表

res = [[None,'A','B'],[19980228, 'd1', 't1'],[19980302, 'd2', 't2'],[19980303, 'd3', 't3']]
现在我需要将上面的结果框成元组列表字典

{'A': [(19980228, 'd1'), (19980302, 'd2'), (19980303, 'd3')], 
 'B': [(19980228, 't1'), (19980302, 't2'), (19980303, 't3')]}
请提前告诉我这个概念,谢谢。

这应该可以做到:

x, A, B = res[0]
output = {A:[], B:[]}
for a,b,c in res[1:]:
  output[A].append((a, b))
  output[B].append((a, c))
这应该做到:

x, A, B = res[0]
output = {A:[], B:[]}
for a,b,c in res[1:]:
  output[A].append((a, b))
  output[B].append((a, c))
注意:@shuzOMGchen指出,这需要在python 2.7和3.0中添加“字典理解”,因此如果您使用的是早期版本,则必须稍微更改代码。这里没有使用dict理解(这很难看,我只是试图从上面复制我的逻辑)

注意:@shuzOMGchen指出,这需要在python 2.7和3.0中添加“字典理解”,因此如果您使用的是早期版本,则必须稍微更改代码。这里没有使用dict理解(这很难看,我只是试图从上面复制我的逻辑)


它是怎么工作的?等等我想我明白了。。那真聪明!请注意,这种技术利用了python 2.7和3.0中添加的“字典理解”功能,因此如果您是2.7之前的版本,这将变得更加复杂。字典的理解在@shuzOMGchen中有描述,这是一个很好的观点,我已经习惯了使用它们,以至于我甚至没有想过。我在我的帖子中编辑了一个小警告,谢谢你的提示。它是如何工作的?等等,我想我明白了。。那真聪明!请注意,这种技术利用了python 2.7和3.0中添加的“字典理解”功能,因此如果您是2.7之前的版本,这将变得更加复杂。字典的理解在@shuzOMGchen中有描述,这是一个很好的观点,我已经习惯了使用它们,以至于我甚至没有想过。我已经在我的帖子中编辑了一个小警告,谢谢你的提示。
>>> res = [[None,'A','B'],[19980228, 'd1', 't1'],[19980302, 'd2', 't2'],[19980303, 'd3', 't3']]
>>> d = {}
>>> for i, a in enumerate(res[0]):
...     if a:
...         d[a] = [(r[0], r[i]) for r in res[1:]]
... 
>>> d
{'A': [(19980228, 'd1'), (19980302, 'd2'), (19980303, 'd3')], 'B': [(19980228, 't1'), (19980302, 't2'), (19980303, 't3')]}
>>> res = [[None,'A','B'],[19980228, 'd1', 't1'],[19980302, 'd2', 't2'],[19980303, 'd3', 't3']]
>>> d = dict((x[0],x[1:]) for x in zip(*res))
>>> nums = d.pop(None)
>>> for key in d:
        d[key] = zip(nums,d[key])


>>> d
{'A': [(19980228, 'd1'), (19980302, 'd2'), (19980303, 'd3')], 'B': [(19980228, 't1'), (19980302, 't2'), (19980303, 't3')]}