2016-12-13 72 views
-1

是否可以從for循環保存多個打印爲字符串變量?基於整數值重複字符串的字符串鍵並形成一個字符串

E.g.我有一本字典,它有字母作爲鍵,每個鍵的值代表鍵應該打印的頻率。整個打印輸出應該是一個字符串,然後保存爲變量。簡單的例子:

hand = {'a':1, 'q':1, 'l':3, 'm':1, 'u':1, 'i':1} 
for letter in hand.keys(): 
    for j in range(hand[letter]): 
     print(letter, end="") #should print out e.g. uilllqma 

我知道我可以追加項目與for循環,但是,想知道如果我可以從打印輸出直接做的每一次迭代的(空)名單(無添加先列表,然後將列表打印爲字符串)。

a = ... #assign e.g. uilllqma to a 
print(a) #prints 'uillqma' 
+0

「uillqma」的值來自哪裏,因此可以賦值給變量'a'? – martineau

+0

從字典... – pythonbrutus

回答

1

乘法說n通過n次重複原始字符串的值。例如:

>>> hand = {'a':1, 'q':1, 'l':3, 'm':1, 'u':1, 'i':1} 
>>> for k, v in hand.items(): 
...  print(k * v) 
... 
a 
i 
m 
lll 
q 
u 

因此,爲了讓所有的結果作爲一個字符串,你可以加入發電機表達爲:

>>> ''.join(k*v for k, v in hand.items()) 
'aimlllqu' 
+0

非常流暢!謝謝! – pythonbrutus

0

你知道訂單無法保證與dict他們是無序的。

但是你可以做一個發電機表達join()

與整數值的字符串
>>> print(''.join(k for k, v in hand.items() for _ in range(v))) 
lllmaiuq 
+0

是的,意識到這一點,但在這種情況下並不重要。感謝您的解決方案,效果很好 – pythonbrutus

0

或者你可以簡單的串連字母:

hand = {'a':1, 'q':1, 'l':3, 'm':1, 'u':1, 'i':1} 
new_str = "" 
for letter in hand.keys(): 
    for j in range(hand[letter]): 
     new_str += letter 

但使用.join()代替更加簡潔。