最大的字母

2024-06-17 17:45:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助创建一个程序,搜索一个列表,并打印出字母重复最多的位置0。目前我有以下几点:

lst=['Bill','Kev','Bard','Mike']
lst2=list()
for word in lst:
  lst3.append(word[0])
print(lst3)

要知道这会创建一个列表['B','K','B','M'] 我怎样才能使它打印出位置0中重复次数最多的字母?你知道吗

没什么太复杂的plz我还是新来的


Tags: in程序列表for字母listwordmike
3条回答
from collections import Counter

# Inside the Counter I use list comprehenshion to get the first letter from each word
counter = Counter([word[0] for word in lst]) 
counter.most_common(1) #  > [('B', 2)]

您可以使用Counter和一组匿名函数:

from collections import Counter
from functools import reduce

lst = ['Bill','Kev','Bard','Mike']

max_value = max(
  reduce(
    lambda p, x: p.update([x]) or p,
    map(lambda x:x[0], lst),
  Counter()).items(),
  key=lambda x:x[1])[0]
print(max_value)

我不需要一个库来解决这个问题,但我不得不说,以前的回答非常优雅,如果您对python库不太了解,这是一个原始的替代方法:

1-假设您有以下数组:

a = ['a','b','c','d','a','b','c','d','a']

2-然后我建议对其进行排序:

a.sort()
out[]: [a,a,a,b,b,c,c,d,d]

3-对数组进行排序后,只需确定它何时从一个字母更改为另一个字母,如下代码所示:

a = ['a','b','c','d','a','b','c','d','a']
a.sort()
counter = 0
for i in range(len(a)):
    counter += 1
    try:
        if(a[i] != a[i+1]):
            print(a[i] + ' is ' + str(counter) + ' times' )
            counter = 0
    except:
        print(a[i] + ' is ' + str(counter) + ' times' )

我使用try except来处理数组的结尾,不管怎样,代码是以一种简单的方式构建的,没有应用任何库,正如我之前提到的,前面的响应非常优雅,并且具有更好的性能,但是这可能会帮助您提高对如何构建算法的理解。致以最良好的祝愿:)

相关问题 更多 >