>>> list_of_map = [{'CN': 'SC',
... 'LB': 'g1k',
... 'SM': 'HG1'},
... {'CN': 'SC',
... 'LB': 'g2k',
... 'SM': 'HG2'},
... {'CN': 'SC',
... 'LB': 'g3k',
... 'SM': 'HG3'}]
>>> from collections import defaultdict
>>> d = defaultdict(set)
>>> for map in list_of_map:
... for k,v in map.items():
... d[k].add(v)
...
>>> d
defaultdict(<type 'set'>, {'LB': set(['g3k', 'g1k', 'g2k']), 'CN': set(['SC']), 'SM': set(['HG2', 'HG3', 'HG1'])})
这不是您想要的数据结构,但它非常接近,如果您真的需要,很容易改变。(虽然我没有在这里展示它,因为我认为set
s 是去这里而不是list
s 的方式)。
要返回列表:
>>> back_to_lists = {k:list(v) for k,v in d.items()}
>>> back_to_lists
{'LB': ['g3k', 'g1k', 'g2k'], 'CN': ['SC'], 'SM': ['HG2', 'HG3', 'HG1']}
甚至:
>>> back_to_lists = {k:sorted(v) for k,v in d.items()}
>>> back_to_lists
{'LB': ['g1k', 'g2k', 'g3k'], 'CN': ['SC'], 'SM': ['HG1', 'HG2', 'HG3']}