Python 如何分别对列表中的项目求和?
我试图创建一个函数,返回列表中的项目类型和计数项目 我有:Python 如何分别对列表中的项目求和?,python,list,Python,List,我试图创建一个函数,返回列表中的项目类型和计数项目 我有: def count_items(column_list): item_types = [] count_items = [] item_types = set(column_list) print(item_types) count_items = ???? return item_types, count_items 返回的项目类型为: {'', 'Female', 'Male'}
def count_items(column_list):
item_types = []
count_items = []
item_types = set(column_list)
print(item_types)
count_items = ????
return item_types, count_items
返回的项目类型为:
{'', 'Female', 'Male'}
如果我使用len
函数来count_items
,它将返回三个值的总和,如{1500}
,但我需要分别使用它们,如{150550800}
我应该使用什么?您可以使用收款计数器
:
from collections import Counter
my_list_of_items = ['a', 'a', 'b']
counter = Counter(my_list_of_items)
---> {'a': 2, 'b': 1}
您可以使用收集计数器
:
from collections import Counter
my_list_of_items = ['a', 'a', 'b']
counter = Counter(my_list_of_items)
---> {'a': 2, 'b': 1}
只能在列表理解和设置的情况下返回计数
def count_items(column_list):
item_types = set(column_list)
return [column_list.count(item) for item in item_types]
column_list=['male','male','','','','female','male','female']
print(count_items(column_list))
输出:
[3, 2, 3]
[['', 3], ['male', 3], ['female', 2]]
或者两者兼而有之
def count_items(column_list):
item_types = set(column_list)
return [[item,column_list.count(item)] for item in item_types]
输出:
[3, 2, 3]
[['', 3], ['male', 3], ['female', 2]]
只能在列表理解和设置的情况下返回计数
def count_items(column_list):
item_types = set(column_list)
return [column_list.count(item) for item in item_types]
column_list=['male','male','','','','female','male','female']
print(count_items(column_list))
输出:
[3, 2, 3]
[['', 3], ['male', 3], ['female', 2]]
或者两者兼而有之
def count_items(column_list):
item_types = set(column_list)
return [[item,column_list.count(item)] for item in item_types]
输出:
[3, 2, 3]
[['', 3], ['male', 3], ['female', 2]]
collections.Counter
collections.Counter
它起作用了,但是我怎么才能只返回数字呢?我是新的编码。。。在测验中挣扎:(list(counter.values())
What@pylang说:)@LeandroBaruch就时间紧迫性而言,这是一个非常优越的解决方案。虽然它与公认的解决方案具有相同的渐近内存复杂性,但常数项应明显更小,因为计数器
是dict
子类,后者针对内存消耗进行了优化,而集
针对速度进行了优化,但速度增益也是一个常数项,也就是说,在一个渐进的效率较低的算法(公认的答案)中,这并不重要。它起作用了,但我怎么能只返回数字呢?我是新的编码。。。在测验中挣扎:(list(counter.values())
What@pylang说:)@LeandroBaruch就时间紧迫性而言,这是一个非常优越的解决方案。虽然它与公认的解决方案具有相同的渐近内存复杂性,但常数项应明显更小,因为计数器
是dict
子类,后者针对内存消耗进行了优化,而集
针对速度进行了优化,但速度增益也是一个常数项,也就是说,在渐进效率较低的算法(公认的答案)中,这并不重要。完美!非常感谢你!请注意,在这里使用list.count()
将使其成为O(N^2)。另外,最好将设置(列列表)
在列表理解之外,这样就不会在每次迭代时生成它。太好了!非常感谢你!请注意,在这里使用list.count()
将使其成为O(N^2)。另外,最好将设置(列列表)
在列表理解之外,这样就不会在每次迭代中生成它。