>>> 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添加了「字典解析」,因此,如果您使用的是早期版本比你不得不稍微改變一下代碼。這是不使用字典理解(這是非常醜陋的,我只是想給我的邏輯從上面複製)
>>> 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')]}
它是如何工作的?等我想我得到它..這就是真的聰明! – aisbaa 2012-04-20 08:09:38
請注意,這種技術利用了「字典理解」,這是一個在python 2.7和3.0中添加的功能,所以如果你在2.7之前,這將變得更加複雜。 字典理解在http://www.python.org/dev/peps/pep-0274/ – 2012-04-20 08:49:36
@shuzOMGchen中有描述這是一個很好的觀點,我很習慣擁有他們,我甚至沒有想過。我已經在我的帖子中編輯了一個小警告,謝謝你的提示。 – 2012-04-20 14:40:25