使用逗号进行Python连接只打印键,而不打印值为

时间:2016-03-11 19:38:28

标签: python

我需要在每个项目之间用逗号连接一个键值对列表。这意味着,如果我有这样的字典:

{A:0,B:0,C:1}

我需要输出如下:

A0,B0,C1 

没有空格。

我已经编写了这段代码,但它只是打印字典的键。它不打印值。

weights = {'A':0, 'B':0, 'C':1}
for each in weights:
    weights[each]= 1
logs = ",".join(weights)

输出我得到:

A,B,C

预期输出:

A1,B1,C1

我已经尝试过weights.keys().values(),但后来我不知道如何把它们放在一起。

非常感谢您的帮助。

5 个答案:

答案 0 :(得分:4)

这是Python字典迭代时的行为方式。要获得您想要的行为:

logs = ",".join(key + str(value) for key, value in weights.items())

此外,如果只需要它进行调试,您只需打印weights.items()的结果。

答案 1 :(得分:3)

将其与您的代码联系起来:

d = {'A':0,'B':0,'C':1}

s = []
for k, v in d.items():
    s.append("{}{}".format(k,v))

print(','.join(s))

然后,您最终可以将其缩短为一行:

注意这里没有方括号。我们实际上在这里使用生成器表达式,这比在这种情况下进行列表理解更有效。

print(",".join("{}{}".format(k,v) for k, v in d.items()))

答案 2 :(得分:2)

字典通常按键迭代。顺序是任意的。对于您正在寻找的输出,您可能更喜欢对项目对进行排序和迭代,如下所示:

>>> ','.join('{}{}'.format(k,v) for k,v in sorted(weights.items()))
'A0,B0,C1'

答案 3 :(得分:1)

词典是关键的价值对。对于预期的输出,您需要同时具有:

','.join('{}{}'.format(k,v) for k,v in sorted(weights.items()))

答案 4 :(得分:1)

您可以使用weights.items()获取键值对,然后加入它们。然后,用逗号连接这些连接。这一切都可以通过列表理解来完成:

>>> ",".join("{}{}".format(*items) for items in weights.items())
A0,B0,C1

这样,您可以稍后改变主意并决定在其中放置冒号,例如:

>>> ",".join("{}:{}".format(*items) for items in weights.items())
A:0,B:0,C:1