代码之家  ›  专栏  ›  技术社区  ›  Ammar Sabir Cheema

将元组列表转换为以整个元组为键的dict列表

  •  1
  • Ammar Sabir Cheema  · 技术社区  · 2 年前

    我有一个嵌套的元组列表,如下所示,

    >>> my_nested_list_of_tuples
      [[('AU041133(+)', 'Qtrt1'), ('Ahr(+)', 'Mex3c'), ('Arid3a(+)', 'Hmgb1')],     
      [('AU041133(+)', 'Topors'), ('Ahr(+)', 'Mex3c'), ('Arid3a(+)', 'Hmgb1')],   
      [('AU041133(+)', 'Tm9sf3'), ('Ahr(+)', 'Mex3c'), ('Arid3a(+)', 'Hmgb1')], 
      [('AU041133(+)', 'Gsn'), ('Ahr(+)', 'Ireb2'), ('Arid3a(+)', 'Hmgb1')],
      [('AU041133(+)', 'Tm9sf3'), ('Ahr(+)', 'Ilf3'), ('Arid3a(+)', 'Arid3a')]]
    

    我想将上面嵌套的元组列表转换为字典列表,整个元组作为键,0作为值,如下所示

     [{('AU041133(+)', 'Qtrt1'): 0, ('Ahr(+)', 'Mex3c'): 0, ('Arid3a(+)', 'Hmgb1'): 0},
     {('AU041133(+)', 'Topors'): 0, ('Ahr(+)', 'Mex3c'): 0, ('Arid3a(+)', 'Hmgb1'): 0},  
     {('AU041133(+)', 'Tm9sf3'): 0, ('Ahr(+)', 'Mex3c'): 0, ('Arid3a(+)', 'Hmgb1'): 0}, 
     {('AU041133(+)', 'Gsn'): 0, ('Ahr(+)', 'Ireb2'): 0, ('Arid3a(+)', 'Hmgb1'): 0}, 
     {('AU041133(+)', 'Tm9sf3'): 0, ('Ahr(+)', 'Ilf3'): 0, ('Arid3a(+)', 'Arid3a'): 0}] 
    

    我尝试了各种方法来实现这一点,但我没有成功,下面给出了我尝试的一种方法,

    >>> d = defaultdict(list)
    >>> dk=[] # for populating with list of dicts
    >>> for k in my_tops: 
    ...     for i,v in k:
    ...          d[(i,v)].append(0)
    ...     dk.append(d)
    ... 
    
    >>> dk
    [defaultdict(<class 'list'>, {('AU041133(+)', 'Qtrt1'): [0], ('Ahr(+)', 'Mex3c'):  [0, 0, 0], 
    ('Arid3a(+)', 'Hmgb1'): [0, 0, 0, 0], ('AU041133(+)', 'Topors'): [0], ('AU041133(+)', 'Tm9sf3'): [0, 0], 
    ('AU041133(+)', 'Gsn'): [0], ('Ahr(+)', 'Ireb2'): [0], ('Ahr(+)', 'Ilf3'): [0], ('Arid3a(+)', 'Arid3a'): [0]}), 
    defaultdict(<class 'list'>, {('AU041133(+)', 'Qtrt1'): [0], ('Ahr(+)', 'Mex3c'): [0, 0, 0], 
    ('Arid3a(+)', 'Hmgb1'): [0, 0, 0, 0], ('AU041133(+)', 'Topors'): [0],  ('AU041133(+)', 'Tm9sf3'): [0, 0], 
    ('AU041133(+)', 'Gsn'): [0], ('Ahr(+)', 'Ireb2'): [0], ('Ahr(+)', 'Ilf3'): [0],  ('Arid3a(+)', 'Arid3a'): [0]}), 
    defaultdict(<class 'list'>, {('AU041133(+)', 'Qtrt1'): [0], ('Ahr(+)', 'Mex3c'): [0, 0, 0], 
    ('Arid3a(+)', 'Hmgb1'): [0, 0, 0, 0], ('AU041133(+)', 'Topors'): [0], ('AU041133(+)', 'Tm9sf3'): [0, 0], 
    ('AU041133(+)', 'Gsn'): [0], ('Ahr(+)', 'Ireb2'): [0], ('Ahr(+)', 'Ilf3'): [0], ('Arid3a(+)', 'Arid3a'): [0]}), 
    defaultdict(<class 'list'>, {('AU041133(+)', 'Qtrt1'): [0], ('Ahr(+)', 'Mex3c'): [0, 0, 0], 
     ('Arid3a(+)', 'Hmgb1'): [0, 0, 0, 0], ('AU041133(+)', 'Topors'): [0], ('AU041133(+)', 'Tm9sf3'): [0, 0], 
    ('AU041133(+)', 'Gsn'): [0], ('Ahr(+)', 'Ireb2'): [0], ('Ahr(+)', 'Ilf3'): [0], ('Arid3a(+)', 'Arid3a'): [0]}), 
    defaultdict(<class 'list'>, {('AU041133(+)', 'Qtrt1'): [0], ('Ahr(+)', 'Mex3c'): [0, 0, 0], ('Arid3a(+)', 'Hmgb1'): [0, 0, 0, 0], 
    ('AU041133(+)', 'Topors'): [0], ('AU041133(+)', 'Tm9sf3'): [0, 0], 
    ('AU041133(+)', 'Gsn'): [0], ('Ahr(+)', 'Ireb2'): [0], ('Ahr(+)', 'Ilf3'): [0],  ('Arid3a(+)', 'Arid3a'): [0]})]
    

    1 回复  |  直到 2 年前
        1
  •  1
  •   Sala    2 年前

    dict_list=[]
    >>> for row in my_nested_list_of_tuples:
    ...     dict_list.append({key:0 for key in row})
    
    [{('AU041133(+)', 'Qtrt1'): 0, ('Ahr(+)', 'Mex3c'): 0, ('Arid3a(+)', 'Hmgb1'): 0},
     {('AU041133(+)', 'Topors'): 0, ('Ahr(+)', 'Mex3c'): 0, ('Arid3a(+)', 'Hmgb1'): 0},
     {('AU041133(+)', 'Tm9sf3'): 0, ('Ahr(+)', 'Mex3c'): 0, ('Arid3a(+)', 'Hmgb1'): 0},
     {('AU041133(+)', 'Gsn'): 0, ('Ahr(+)', 'Ireb2'): 0, ('Arid3a(+)', 'Hmgb1'): 0},
     {('AU041133(+)', 'Tm9sf3'): 0, ('Ahr(+)', 'Ilf3'): 0, ('Arid3a(+)', 'Arid3a'): 0}]