为了简化我的问题,我的管道中有一本字典,我想将其打印为表格。
例如。这是我用这个打印的字典:
for k, v in dict.items():
if len(v) >= float(2):
print k , v
NODE_2908 [{'NODE_2908_1': 'gi|497712399|'}, {'NODE_2908_2': 'gi|817665741|'}]
NODE_334 [{'NODE_334_2': 'gi|639993929|'}, {'NODE_334_3': 'gi|652409655|'}]
NODE_246 [{'NODE_246_1': 'gi|754171522|'}, {'NODE_246_2': 'gi|658510970|'}]
一个简单的文本文件及其值。 但是,我想要的是将“v”打印为表格,避免特殊字符“(,', [, ),{”并用“\t”分隔。 像这样:
NODE_2908 NODE_2908_1: gi|497712399 NODE_2908_2: gi|817665741|
NODE_334 NODE_334_2: gi|639993929| NODE_334_3: gi|652409655|
NODE_246 NODE_246_1: gi|754171522| NODE_246_2: gi|658510970|
我尝试了这个并取得了成功:
for k, v in dict.items():
if len(v) >= float(2):
print k + '\t' + str(('\t').join(sorted(v)))
弹出错误:
print k + '\t' + str(('\t').join(sorted(v)))
TypeError: sequence item 0: expected string, dict found
保留此结构的建议将不胜感激。先感谢您。
最佳答案
这有点困惑,但应该可以:
from itertools import chain
for k, v in d.items():
if len(v) >= 2:
print("\t".join(chain([k], *(item for dd in v for item in dd.items()))))
结果:
NODE_2908 NODE_2908_1 gi|497712399| NODE_2908_2 gi|817665741|
NODE_246 NODE_246_1 gi|754171522| NODE_246_2 gi|658510970|
NODE_334 NODE_334_2 gi|639993929| NODE_334_3 gi|652409655|
或者,也许没有 itertools:
In [25]: for k, v in d.items():
...: if len(v) >= 2:
...: print(k + '\t' + "\t".join(s for dd in v for t in dd.items() for s in t))
...:
...:
NODE_2908 NODE_2908_1 gi|497712399| NODE_2908_2 gi|817665741|
NODE_246 NODE_246_1 gi|754171522| NODE_246_2 gi|658510970|
NODE_334 NODE_334_2 gi|639993929| NODE_334_3 gi|652409655|
关于python - 将字典的字典打印为表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41348949/