Skip to main content
 首页 » 编程设计

python之在 Python 中的最后一次循环迭代中跳过逗号

2025年05月04日15wuhuacong

我正在尝试用 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 通常也会优于字符串连接(在循环中)。