2014-09-22 172 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)将加入该列表制作一个字符串。

相关问题