2014-09-22 173 views
0

我想打印出我的字典中的所有字母(在我的代碼的最後一行可以看到),問題是現在輸出爲aqmui。但是,正如你們可以看到我的字典中的l值是2,所以我想打印出來2次。所以我的程序的輸出應該是:aqllmui。Python - 字典打印密鑰的次數與他的值相同

幫助將不勝感激! :)

def display_hand(hand): 

    row = '' 
    for letter in hand: 
     row += letter 

     #I think i need to put an if statement here but I just don't know how to do it 

    print row 


display_hand({'a':1, 'q':1, 'l':2, 'm':1, 'u':1, 'i':1}) 

回答

1

只是做:

row += letter * hand[letter] 
+0

適合我。看起來很奇怪,乘以char的int返回字符串..是python定義這個__mul__(multiply)函數的方式嗎? – eitank 2014-09-22 16:34:18

+0

是的。這是python的核心原則之一,即基本操作符經常超載。例如,還有'[4,5] * 2 == [4,5,4,5]'。 (頭髮拆分註釋:Python中沒有字符類型,這只是一個字符'str'。) – Marian 2014-09-22 16:57:51

1

您可以使用字符串/ INT乘法執行多個串連

for letter in hand: 
    row += letter * hand[letter] 

還是有點更清晰,高效:

for letter, count in hand.iteritems(): # Use hand.items() in Python 3 
    row += letter * count 
1

您也可以嘗試print "".join(k*v for (k,v) in s.iteritems())

這裏k*v for (k,v) in s.iteritems()返回一個列表key*value["a","i","m","ll","q","u"]"".join(list)將加入該列表製作一個字符串。

相關問題