在Python中,与implode(PHP)相当的功能是什么?

3

我有一个包含以下数据的dict()

{0: 1703554, 1: 1143136, 2: 1877978, 3: 1593739, 4: 708961, 5: 708961, 6: 412752, 7: 266352, 8: 1164387, 9: 1164387}

PHP中,可以使用implode()轻松地获取所有值的逗号分隔列表,例如1703554,1143136,1877978...。那么在Python中该怎么做呢?我尝试了以下代码:print(','.join(str(id))),但输出结果不正确。
{,0,:, ,1,7,0,3,5,5,4,,, ,1,:, ,1,1,4,3,1,3,6,,, ,2,:, ,1,8,7,7,9,7,8,,, ,3,:, ,1,5,9,3,7,3,9,,, ,4,:, ,7,0,8,9,6,1,,, ,5,:, ,7,0,8,9,6,1,,, ,6,:, ,4,1,2,7,5,2,,, ,7,:, ,2,6,6,3,5,2,,, ,8,:, ,1,1,6,4,3,8,7,,, ,9,:, ,1,1,6,4,3,8,7,}

我曾尝试使用 id.values(),但并未奏效,可能是我使用方法不对,请帮忙!

这是 print(id.values)

[1703554, 1143136, 1877978, 1593739, 708961, 708961, 412752, 266352, 1164387, 1164387]

我希望将其作为字符串返回。


你是怎么使用 id.values() 的?请贴出那段代码。 - Ashwini Chaudhary
2个回答

11
你需要将每个值转换为字符串,并使用逗号将所有字符串连接起来:
print(','.join(str(v) for v in id.values()))
或者
print(','.join(map(str, id.values())))

但是你的解决方案非常完美,而且对于像我这样的新手来说非常容易使用。 - M K
我会使用第一种解决方案,而不是生成器表达式,我会使用真正的列表,因为在内存中的列表上 .join 更快。 - bgusach
@ikaros45,这就是所谓的过早优化。当然,列表可能会更快(在一个100个元素的字典上,我测试了一下,大约比运行时间快1.7微秒,占总运行时间的8%),但除非你已经计时并证明某些东西成为瓶颈,否则你应该选择更清晰的代码而不是更快的代码。 - Duncan
我不会把“肮脏的代码”称为一对方括号 :) - bgusach

6

你正在寻找dict.values()

>>> d = {0: 1703554, 1: 1143136, 2: 1877978, 3: 1593739, 4: 708961, 5: 708961, 6: 412752, 7: 266352, 8: 1164387, 9: 1164387}
>>> d.values()
[1703554, 1143136, 1877978, 1593739, 708961, 708961, 412752, 266352, 1164387, 1164387]

编辑

如果要将它们作为字符串获取,可以使用字符串推导式:

[str(d[key]) for key in d] #or
[str(v) for v in d.values()] #or
[str(value) for _k, value in d.items()]

要将其打印为字符串,您可以执行以下操作

', '.join(str(v) for v in d.values())

我希望输出一个字符串 - M K
[str(x) for x in d.values()] - Tim
在Python 2中,我们可以用str(d.values())[1:-1]来替换最后一个。(在Python 3中可以使用str(list(d.values()))[1:-1] - Ashwini Chaudhary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接