基于整数值重复字符串的字符串键并形成一个字符串
是否可以从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'
乘法说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'
非常流畅!谢谢! – pythonbrutus
你知道订单无法保证与dict
他们是无序的。
但是你可以做一个发电机表达join()
:
>>> print(''.join(k for k, v in hand.items() for _ in range(v)))
lllmaiuq
是的,意识到这一点,但在这种情况下并不重要。感谢您的解决方案,效果很好 – pythonbrutus
或者你可以简单的串连字母:
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()代替更加简洁。
“uillqma”的值来自哪里,因此可以赋值给变量'a'? – martineau
从字典... – pythonbrutus