我需要在每个项目之间用逗号连接一个键值对列表。这意味着,如果我有这样的字典:
{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()
,但后来我不知道如何把它们放在一起。
非常感谢您的帮助。
答案 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