我想写一个列表的字典到tsv文件。问题是我无法转置列表。
我有以下列表的字典:
打印d
defaultdict(<type 'list'>, {1: ['Genemark1.10973_g', 'missense_variant', 'MODERATE', 'scaffold_100', 305, '605', 'Asp', 'Gly', 'YES', 'NO', 'NO', 'NO'], 2: ['estExt_Genewise1Plus.C_1000001', 'disruptive_inframe_insertion', 'MODERATE', 'scaffold_100', 5002, '7172', 'Gly', '', 'YES', 'NO', 'NO', 'NO'], 3: ['fgenesh2_pm.100_#_3', 'inframe_insertion', 'MODERATE', 'scaffold_100', 10104, '265266', 'Leu', '', 'YES', 'NO', 'NO', 'NO'], 4: ['estExt_fgenesh2_pg.C_100178', 'inframe_deletion', 'MODERATE', 'scaffold_10', 711411, '351352', 'Gln', '', 'YES', 'NO', 'NO', 'NO'], 5: ['estExt_fgenesh2_pm.C_1060001', 'disruptive_inframe_deletion', 'MODERATE', 'scaffold_106', 5189, '832', 'Leu', 'del', 'YES', 'NO', 'NO', 'NO'], 6: ['Genemark1.10980_g', 'frameshift_variant', 'HIGH', 'scaffold_101', 10838, '313', 'Leu', 'fs', 'NO', 'YES', 'NO', 'NO'], 7: ['Genemark1.10973_g', 'missense_variant', 'MODERATE', 'scaffold_100', 2043, '26', 'Ile', 'Leu', 'YES', 'NO', 'NO', 'NO'], 8: ['fgenesh2_pm.104_#_2', 'stop_gained', 'HIGH', 'scaffold_104', 8574, '310', 'Tyr', '*', 'YES', 'NO', 'NO', 'NO']})
这是我的功能:
from itertools import izip_longest
def printAnn(d):
rows = izip_longest(*d.values())
w = csv.writer(sys.stdout, delimiter='\t', quoting=csv.QUOTE_NONE, lineterminator='\n')
w.writerows(rows)
我得到的输出:
Genemark1.10973_g estExt_Genewise1Plus.C_1000001 fgenesh2_pm.100_#_3 estExt_fgenesh2_pg.C_100178 estExt_fgenesh2_pm.C_1060001 Genemark1.10980_g Genemark1.10973_g fgenesh2_pm.104_#_2
missense_variant disruptive_inframe_insertion inframe_insertion inframe_deletion disruptive_inframe_deletion frameshift_variant missense_variant stop_gained
MODERATE MODERATE MODERATE MODERATE MODERATE HIGH MODERATE HIGH
scaffold_100 scaffold_100 scaffold_100 scaffold_10 scaffold_106 scaffold_101 scaffold_100 scaffold_104
305 5002 10104 711411 5189 10838 2043 8574
605 7172 265266 351352 832 313 26 310
Asp Gly Leu Gln Leu Leu Ile Tyr
Gly del fs Leu *
YES YES YES YES YES NO YES YES
NO NO NO NO NO YES NO NO
NO NO NO NO NO NO NO NO
NO NO NO NO NO NO NO NO
PS :我已尝试izip_longest
一个列表(不是列表词典),它运行正常。我缺少什么?
答案 0 :(得分:2)
无需zip
满足您的要求。想一想。您希望行的每个元素都显示在其列中,这与保持行完整无缺。
def printAnn(d):
w = csv.writer(sys.stdout, delimiter='\t', quoting=csv.QUOTE_NONE, lineterminator='\n')
w.writerows(d.values())
printAnn(d)
Genemark1.10973_g missense_variant MODERATE scaffold_100 305 605 Asp Gly YES NO NO NO
estExt_Genewise1Plus.C_1000001 disruptive_inframe_insertion MODERATE scaffold_100 5002 7172 Gly YES NO NO NO
fgenesh2_pm.100_#_3 inframe_insertion MODERATE scaffold_100 10104 265266 Leu YES NO NO NO
estExt_fgenesh2_pg.C_100178 inframe_deletion MODERATE scaffold_10 711411 351352 Gln YES NO NO NO
estExt_fgenesh2_pm.C_1060001 disruptive_inframe_deletion MODERATE scaffold_106 5189 832 Leu del YES NO NO NO
Genemark1.10980_g frameshift_variant HIGH scaffold_101 10838 313 Leu fs NO YES NO NO
Genemark1.10973_g missense_variant MODERATE scaffold_100 2043 26 Ile Leu YES NO NO NO
fgenesh2_pm.104_#_2 stop_gained HIGH scaffold_104 8574 310 Tyr * YES NO NO NO
如果这不是您想要的,请发表评论。