2016-12-13 1 views
-1

for 루프에서 여러 개의 인쇄물을 문자열 변수로 저장할 수 있습니까?정수 값을 기준으로 dict의 문자열 키를 반복하고 단일 문자열을 형성하십시오.

예. 나는 사전을 가지고 있으며 그 문자를 키로 가지고 있으며 각 키의 값은 얼마나 자주 키를 인쇄해야 하는지를 나타냅니다. 전체 출력물은 단지 문자열이어야하며, 그 다음 변수로 저장됩니다. 간단한 예 :

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 

난 그냥 내가 인쇄물에서 직접 할 수있는 경우에 대한 루프, 그러나, 궁금 해서요의 각 반복과 (빈) 목록에 항목을 추가 할 수 있음을 알고 있습니다 (추가하지 않고 먼저 목록에 추가 한 다음 목록을 문자열로 인쇄).

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

''uillqma '값은 어디서 왔습니까? 그래서 변수'a'에 할당 할 수 있습니까? – martineau

+0

예를 들어, – pythonbrutus

답변

1

곱셈은 nn 배 원래 문자열의 값을 반복 말한다. 예를 들어 :

>>> 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

을 또는 당신이 할 수있는 간단한 CONCATENATE 문자 :

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()을 사용하는 것이 더 간결합니다.

관련 문제