2024-06-17 17:45:02 发布
网友
我需要帮助创建一个程序,搜索一个列表,并打印出字母重复最多的位置0。目前我有以下几点:
lst=['Bill','Kev','Bard','Mike'] lst2=list() for word in lst: lst3.append(word[0]) print(lst3)
要知道这会创建一个列表['B','K','B','M'] 我怎样才能使它打印出位置0中重复次数最多的字母?你知道吗
没什么太复杂的plz我还是新来的
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和一组匿名函数:
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来处理数组的结尾,不管怎样,代码是以一种简单的方式构建的,没有应用任何库,正如我之前提到的,前面的响应非常优雅,并且具有更好的性能,但是这可能会帮助您提高对如何构建算法的理解。致以最良好的祝愿:)
您可以使用
Counter
和一组匿名函数:我不需要一个库来解决这个问题,但我不得不说,以前的回答非常优雅,如果您对python库不太了解,这是一个原始的替代方法:
1-假设您有以下数组:
2-然后我建议对其进行排序:
3-对数组进行排序后,只需确定它何时从一个字母更改为另一个字母,如下代码所示:
我使用try except来处理数组的结尾,不管怎样,代码是以一种简单的方式构建的,没有应用任何库,正如我之前提到的,前面的响应非常优雅,并且具有更好的性能,但是这可能会帮助您提高对如何构建算法的理解。致以最良好的祝愿:)
相关问题 更多 >
编程相关推荐