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)。另外,最好将
设置(列列表)
在列表理解之外,这样就不会在每次迭代中生成它。