创建一个简单的字典:
procinfos = {"f1": f1, "f2": f2, "f3shell" : (wrap_for_process, q, f3shell, "input arg1", "input arg2")}
Run Code Online (Sandbox Code Playgroud)
然后我想打印其内容:
print (procinfo for procinfo in procinfos)
<generator object <genexpr> at 0x7f46dccc0dc0>
Run Code Online (Sandbox Code Playgroud)
为什么python只告诉我这是一个生成器?我怎样才能简单地打印内容.从我读到的关于生成器的内容来看,它们不打算使用dict/list.但这已经是一个完全具体化的系列 - 对我来说没有任何意义(至少对我来说......)而不是简单地打印它.这是常见的用例,会欣赏一种获取这些集合的基本打印的简洁方法.谢谢.
更新:我想要一行/内联,而不是多行.谢谢.
你正在打印一台发电机.
procinfo for procinfo in procinfos
Run Code Online (Sandbox Code Playgroud)
是一个生成器表达式.它只会在迭代时进行评估.您可以这样做,例如将其传递给列表构造函数:
list(procinfo for procinfo in procinfos)
Run Code Online (Sandbox Code Playgroud)
但是你可以得到相同的结果(注1):
list(procinfos.keys())
Run Code Online (Sandbox Code Playgroud)
或者在Python 2中:
procinfos.keys()
Run Code Online (Sandbox Code Playgroud)
所以最有可能的是,做你想做的事情:
print procinfos.keys()
Run Code Online (Sandbox Code Playgroud)
如果你想在每行打印一个,你可以这样做:
print '\n'.join(procinfos)
Run Code Online (Sandbox Code Playgroud)
注1:实际上只是list(procinfos)将工作,就像"\n'.join(procinfos),但为什么它的工作是不太明显,但它是因为遍历字典会遍历它的键.这是一个更高级的Python,所以现在不要担心它.:-)
| 归档时间: |
|
| 查看次数: |
916 次 |
| 最近记录: |