从地图解压缩值后分配变量

时间:2018-10-27 10:11:40

标签: python

从这个答案中,我了解了如何使用map来计算字符串中任何字符的出现次数,

Count Vowels in String Python

这是我的代码,它计算字符串中任何元音的出现,

name = "maverick dean"
vowels = 'aeiou'
x = list(map(name.lower().count, 'aeiou'))

如您所见,我使用列表将map的每个值放在list中。

哪个给出此输出,

[2, 2, 1, 0, 0]

我的愿望输出是

[ "a:2", "e:2", "i:1", "o:0", "u:0" ]

现在我知道我可以使用for循环来执行此操作,但是还有其他方法可以直接映射x的输出以使其与实际的元音一起显示吗?

2 个答案:

答案 0 :(得分:2)

您可以为此使用lambda function

x = list(map(lambda v: "{}:{}".format(v, name.lower().count(v)), vowels))
print(x)
# ['a:2', 'e:2', 'i:1', 'o:0', 'u:0']

答案 1 :(得分:1)

您可以使用列表理解

x = ["%s:%d" % (letter, name.lower().count(letter)) for letter in vowels]

或者您甚至可以使用zip压缩到原始列表上,即

x = ["%s:%d" % (l,c) for l, c in zip(vowels, map(name.lower().count, vowels))]