在列表列表中计算不同的值-Python

在列表列表中计算不同的值-Python,python,python-2.7,list,count,Python,Python 2.7,List,Count,我刚刚将值从.csv文件导入到列表列表中,现在我需要知道有多少不同的用户。文件本身如下所示: [['123', 'apple'], ['123', 'banana'], ['345', 'apple'], ['567', 'berry'], ['567', 'banana']] 基本上,我需要知道有多少不同的用户(每个子列表中的第一个值是一个用户ID)(3在这种情况下,在做了一些Excel过滤后超过6000),以及食物本身的频率是多少:{'apple':2,'banana':2,'berry'

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

[['123', 'apple'], ['123', 'banana'], ['345', 'apple'], ['567', 'berry'], ['567', 'banana']]
基本上,我需要知道有多少不同的用户(每个子列表中的第一个值是一个用户ID)(
3
在这种情况下,在做了一些Excel过滤后超过6000),以及食物本身的频率是多少:
{'apple':2,'banana':2,'berry':1}

以下是我尝试用于不同值计数的代码(使用Python 2.7):


您可以使用
[x[0]for x in result\u list]
获取所有ID的列表。然后创建一个
集合
,它是该列表中所有唯一项的全部列表。然后,集合的长度将为您提供唯一用户的数量

len(set([x[0] for x in result_list]))

这就是
计数器的作用:

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)

{..for x in result_list}
是集合理解。

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

result_distinct = len({x[0] for x in result_list})
和频率,您可以使用集合。计数器

freqs = collections.Counter([x[1] for x in result_list])

对于第一个问题,使用

对于第二个问题,使用

result_distinct = len({x[0] for x in result_list})
freqs = collections.Counter([x[1] for x in result_list])
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
import collections
import operator

result = collections.Counter(map(operator.itemgetter(1), lists))

print(result)
# Counter({'apple': 2, 'banana': 2, 'berry': 1})