我正在尝试用 Python 迭代字典。输出必须类似于某种格式,以便它可以用作其他内容的输入。输入看起来像这样:
"ok":"1",
"invalid", "0",
"unknown", "4",
...
输出应该是这样的:
operation,ok=1,invalid=0,unknown=4,...
我真的很接近用 for 循环得到它,但我读到这可以用 Python 中的 .join() 很容易地完成。这是我的代码:
output_str = 'operation,'
for key, val in events.items():
output_str += '{0}={1},'.format(key, val)
print output_str
我可以使用 .join 来做到这一点吗?我读到 join 将允许我在最后一次迭代中跳过逗号。如果我这样做的话,我只是不确定如何将我的“操作”字符串添加到所有内容之前。
请您参考如下方法:
您确实可以在此处使用 str.join 函数将不同的元素连接在一起:
output_str = 'operation,'
output_str += ','.join(<b>'{0}={1}'.format(key,val) for key,val in events.items()</b>)
或者将其放在单行中(甚至使其更短):
output_str = 'operation,'+','.join('{0}={1}'.format(<b>*tup</b>) for <b>tup</b> in events.items())
这是如何工作的?正如 documentation 中所指定的那样, str.join 获取 str 的 iterable 并将它们与分隔符连接在一起(这里是 ',' ).所以 ','.join(['foo','bar','qux']) 生成 'foo,bar,qux'。
现在我们使用生成器。对于 events.items() 中的 key,value 对,我们构造一个字符串 '{0}={1}'格式(键,值)。因此,如果 key='ok' 和 val='1',则 {0}={1}'.format(key,val) 将生成 ok=1。现在我们将所有这些结合在一起。
由于 str.join 不添加尾部分隔符,因此它符合您问题的规范。 join 通常也会优于字符串连接(在循环中)。
