>>> 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の代わりにsがここに行く方法だと思うので、ここでは示していませんlist
)。
リストに戻るには:
>>> 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']}