列表中最大的字母

时间:2018-11-07 01:09:22

标签: python python-3.x count

我需要帮助来创建一个程序,该程序可以搜索列表并打印出在位置0处重复最多的字母。现在,我有以下内容:

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

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

太复杂了,我还是个新人

3 个答案:

答案 0 :(得分:4)

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)]

答案 1 :(得分:1)

您可以使用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)

答案 2 :(得分:1)

我不需要库来解决这个问题,但是我不得不说以前的回答非常优雅,如果您不熟悉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来处理数组的末尾,无论如何,代码都是以简单的方式构建的,无需应用任何库,正如我之前提到的那样,之前的响应非常优雅并且具有更好的性能,但这也许可以帮助您增进您对如何建立算法的了解。最好的祝福是继续编码:)