python - 将字典的字典打印为表格

标签 python dictionary printing

为了简化我的问题,我的管道中有一本字典,我想将其打印为表格。

例如。这是我用这个打印的字典:

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/

相关文章:

python - 将一个变量赋值到 `g` 一次且仅一次用于 Flask 中的应用

python - 使用 python 进行 One Hot 编码的快速方法

c++ - vector map 的实现

c# - 使用 IDictionary 接口(interface)封装字典,而不是覆盖或隐藏方法

用于打印的 Python 字典键格式不适用于数字字符串

python - 由于 pip/distribute 错误,Heroku 推送被拒绝。解决方法是什么?

python - 追加到字典中的列表

css - 打印网页

r - 如何在 R 中打印到 stderr?

python - 如何在 python 包装中使用 unicode 字符串为 c++ 类使用 cython?