对列表列表中的不同值进行计数Python

2024-04-23 09:41:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚从一个.csv文件导入了一个列表列表,现在我需要知道有多少不同的用户。文件本身如下所示:

[['123', 'apple'], ['123', 'banana'], ['345', 'apple'], ['567', 'berry'], ['567', 'banana']]

基本上,我需要知道有多少不同的用户(每个子列表中的第一个值是一个用户ID)(在本例中,3在进行一些Excel过滤后,超过6000个),以及食物本身的频率是什么:{'apple': 2, 'banana': 2, 'berry': 1}。在

下面是我尝试用于不同值计数的代码(使用Python2.7):

^{pr2}$

Tags: 文件csv代码用户idapple列表excel
3条回答

对于第一个问题,使用^{}

import operator

lists = [['123', 'apple'], ['123', 'banana'], ['345', 'apple'], ['567', 'berry'], ['567', 'banana']]
nrof_users = len(set(map(operator.itemgetter(0), lists)))

print(nrof_users)
# 3

对于第二个问题,使用^{}

^{pr2}$

这就是Counter的全部内容:

import csv
from collections import Counter

result_list = []

with open('food.csv', 'rb') as food:
    next(food)
    for line in food:
        csv_food = csv.reader(food)
        result_list += list(csv_follows)

result_counter = Counter(x[1] for x in result_list)

print len(result_counter)

Counter是一种特殊的词典。在内部,字典将包含{'apple': 2, 'banana': 2, 'berry': 1},因此您可以检查所有元素及其计数。len(result_counter)将给出不同元素的数目,而{}将给出元素的总数。在

编辑:显然,您想要统计不同的用户数。您可以使用:

^{pr2}$

这个{.. for x in result_list}集合理解。在

要获取不同的用户,可以使用集合:

result_distinct = len({x[0] for x in result_list})

对于频率,您可以使用collections.Counter

^{pr2}$

相关问题 更多 >