我试图在Python中迭代字典.输出必须类似于某种格式,因此它可以用作其他内容的输入.输入看起来像这样:
"ok":"1",
"invalid", "0",
"unknown", "4",
...
Run Code Online (Sandbox Code Playgroud)
输出应如下所示:
operation,ok=1,invalid=0,unknown=4,...
Run Code Online (Sandbox Code Playgroud)
我真的很接近于使用for循环,但我读到这可以用.join()Python 很容易地完成.这是我现在的代码:
output_str = 'operation,'
for key, val in events.items():
output_str += '{0}={1},'.format(key, val)
print output_str
Run Code Online (Sandbox Code Playgroud)
我可以这样做.join吗?我读到加入将允许我跳过最后一次迭代的逗号.如果我这样做,我只是不确定如何将所有"操作"字符串添加到所有内容中.
你确实可以在str.join这里使用一个函数将不同的元素连接在一起:
output_str = 'operation,'
output_str += ','.join('{0}={1}'.format(key,val) for key,val in events.items())Run Code Online (Sandbox Code Playgroud)
或者将其放入单线(甚至使其更短):
output_str = 'operation,'+','.join('{0}={1}'.format(*tup) for tup in events.items())Run Code Online (Sandbox Code Playgroud)
这是如何运作的?随着中指定的文件,str.join需要一个iterable中str英格斯和与分离器(在这里一起加入他们',').所以','.join(['foo','bar','qux'])生成'foo,bar,qux'.
现在我们在这里使用发电机.对于key,value一对events.items(),我们创建一个字符串用'{0}={1}'.format(key,val).所以,如果key='ok'和val='1',那么{0}={1}'.format(key,val)将产生ok=1.现在我们将所有这些加在一起.
由于str.join不添加拖尾分离器,因此它符合您的问题的规格.join通常也会超过字符串连接(在循环中).
| 归档时间: |
|
| 查看次数: |
829 次 |
| 最近记录: |