算法求教~Python

user = [('zhang',28,183),('wang',28,165),('li',26,170),('zhao',24,177)]

list中每个tuple值含义依次为:姓名,年龄,身高
问:
怎么能快速的统计出user中有多少种年龄?

我只想到统计具体某个年龄的数量,如28:

len([u for u in user if u[1]==28])

但是对于统计所有年龄的总数(比如统计出user中有3种年龄,分别是28,26,24),感觉没什么好的办法,大家看看有办法咩?

阅读 5.8k
6 个回答

是这个意思吗?

a = {}
for (_,u,_) in user:  a[u] = a[u] + 1 if a.has_key(u) else 1

Python的内置函数很强大, 多用.

   len(set(list(zip( *user))[1]))
from collections import Counter
user = [('zhang',28,183),('wang',28,165),('li',26,170),('zhao',24,177)]
cnt = Counter()
for u in user:
    cnt[u[1]] += 1
print cnt
result:
Counter({28:2,26:1,24:1})
sum(zip(*user)[1])
新手上路,请多包涵
import collections
len(collections.Counter(u[1] for u in user if u[1]))
print str(user).count(", %d," % 28)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题