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

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

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

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

有没有办法获得第二段代码中给出的预期输出?

谢谢

推荐答案

如果我正确理解了你的问题,解决方案可能是:

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

Python-3.x相关问答推荐

按小时和日期对Pandas 数据帧进行分组

十进制浮点数到整型的转换错误

PySpark每毫秒使用先前的值填充数据

CDKTF ec2 具有特定私有 IP 地址的娱乐

找到在指定列的另一个分组中存在重复的行.

如何将列表和字典逐行组合在一起

当我判断另一个 checkButton 时,如何判断两个 python tkinter checkButtons?

避免重复连续字符但不包括一个特定字符的正则表达式

SMTP 库 Python3:不太安全的应用程序访问

Pandas数据单调行为

pip install mysqlclient 失败为 mysqlclient 运行 setup.py bdist_wheel ... 错误

Python:pprint的模块错误,打印没有错误

python - 错误 R10(启动超时)-> Web 进程未能在启动后 60 秒内绑定到 $PORT

我们如何获得 __repr__() 的默认行为?

如何调试垂死的 Jupyter Python3 内核?

Python中的多行日志(log)记录

如何正确创建自定义文本编解码器?

如何在继承的数据类中创建可选字段?

使用 urllib3 忽略证书验证

python - Pandas - Dataframe.set_index - 如何保留旧的索引列