是否可以将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 :(得分: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'
答案 1 :(得分:0)
您确实知道订单无法保证dict
它们是无序的。
但是您可以使用生成器表达式执行join()
:
>>> print(''.join(k for k, v in hand.items() for _ in range(v)))
lllmaiuq
答案 2 :(得分: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()则更简洁。