基于整数值重复dict的字符串键并形成单个字符串

时间:2016-12-13 22:04:25

标签: python string python-3.x dictionary

是否可以将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'

3 个答案:

答案 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()则更简洁。

相关问题