簡體   English   中英

如何在元組字典中創建列表列表

[英]how to make a list of lists in to dictionary of tuples

例如,我有清單清單

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))
>>> res = [[None,'A','B'],[19980228, 'd1', 't1'],[19980302, 'd2', 't2'],[19980303, 'd3', 't3']]
>>> {a:[(r[0], r[i]) for r in res[1:]] for i, a in enumerate(res[0]) if a}
{'A': [(19980228, 'd1'), (19980302, 'd2'), (19980303, 'd3')], 'B': [(19980228, 't1'), (19980302, 't2'), (19980303, 't3')]}

注意:正如@shuzOMGchen指出的那樣,這需要在python 2.7和3.0中添加的“字典理解”,因此,如果使用的版本比以前的版本早,則必須稍稍更改代碼。 這里沒有使用dict理解(這很丑陋,我只是嘗試從上面復制我的邏輯)

>>> 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')]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM