2016-03-11 124 views
1

我需要在每個項目之間用逗號連接鍵值對列表。也就是說,如果我有這樣的詞典:用逗號加入的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(),但我不知道如何把它們放在一起。

非常感謝您的幫助。

+0

嘗試:'關鍵,重量值:' –

回答

2

詞典通常按鍵迭代。順序是任意的。對於您正在尋找的輸出,您可能更願意按以下方式對項目對進行排序和迭代:

>>> ','.join('{}{}'.format(k,v) for k,v in sorted(weights.items())) 
'A0,B0,C1' 
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())) 
4

這是Python字典在迭代時的行爲方式。爲了得到你想要做的行爲:

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

另外,如果只需要進行調試,你可以只打印的weights.items()結果。

1

詞典是鍵值對。對於預期的輸出,你需要有兩個:

','.join('{}{}'.format(k,v) for k,v in sorted(weights.items())) 
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