【发布时间】:2020-07-03 13:02:14
【问题描述】:
我在测试中遇到了这个问题。这个问题有两个部分:
第一部分:
给定一个口味列表,例如。 ['A','A','A','A','B','B','B','B','B','C','C','C',' C'],编写一个函数,分别返回每个风味的个数的字典。
我的解决方案:
flavors = ['A','A','A','A','B','B','B','B','B','C','C','C','C']
def count_flavors(l):
dict_flavors={}
for i in l:
dict_flavors[i] = l.count(i)
return dict_flavors
print(count_flavors(flavors))
第二部分:
使用不超过一个 for 循环编写一个函数,该函数接受一系列风味列表,例如。 [['A', 'A', 'B', 'B', 'B', 'C', 'C'], ['A', 'A', 'B', 'B', 'B ', 'B', 'C'], ['A', 'B', 'C', 'C']] 并返回每个风味总数的字典。您必须在此解决方案中包含您在第一部分中定义的函数。 (澄清一下,本质上应该只有两个 for 循环;一个来自第一部分,一个来自第二部分)
到目前为止,我的解决方案如下:
batches = [['A','A','A','A','B','B','B','B','B','C','C','C','C'], ['A', 'A', 'B', 'B' ,'B','B','C'], ['A','B','C','C']]
def batch_count(b):
batch_dict = []
result = {}
for j in b:
batch_dict.append(count_flavors(j))
print(batch_dict)
for i in batch_dict:
for k in i.keys():
result[k] = result.get(k,0) + i[k]
return result
print('batch count 1:' + str(batch_count(batches)))
我正在努力寻找一个只为此部分使用一个 for 循环的解决方案。我知道有类似collections.Counter() 这样的模块存在。是否有一个不包含任何可能解决此问题的模块的天真的解决方案?
谢谢!
【问题讨论】:
-
嘿,我已根据您的要求更新了我的答案。让我知道它对你有什么好处:)
标签: python-3.x list dictionary for-loop nested-lists