paulwinflo 发表于 2014-06-25 23:48

【已解决】python如何统计数组的不同数字以及不同数字出现的次数

本帖最后由 paulwinflo 于 2014-06-26 15:25 编辑

有这样的一个数组,如何用python实现统计该数组不同的数字以及不同数字出现的次数。所达到效果:8.0 出现2次,4.0出现3次,11.0出现1次。在线等。。。。。。求大神帮帮忙!!!

linustd 发表于 2014-06-26 07:44

太简单了,还没毕业的新手吧。

arr =
dic={}
for item in arr:
    if item in dic.keys():
      dic+=1
    else:
      dic=1
print(dic)
---------
{8.0: 2, 11.0: 1, 4.0: 3}

ssfjhh 发表于 2014-06-26 08:56

本帖最后由 ssfjhh 于 2014-06-26 08:57 编辑

a =
d = {k:a.count(k) for k in set(a)}==============
{8.0: 2, 11.0: 1, 4.0: 3}

paulwinflo 发表于 2014-06-26 11:00

回复 3# ssfjhh


   谢谢大神!!!么么哒

linustd 发表于 2014-06-26 12:26

ssfjhh 发表于 2014-06-26 08:56 static/image/common/back.gif
==============
{8.0: 2, 11.0: 1, 4.0: 3}

你这个代码的时间复杂度远远高于我的代码啊。

q1208c 发表于 2014-06-26 14:27

搬个板凳, 坐看两位大神 PK. :mrgreen:

paulwinflo 发表于 2014-06-26 15:23

回复 5# linustd


    恩 这个大神已经如火纯情了

Hadron74 发表于 2014-06-26 15:53

我也来一个:a =
d = {}
).append(k) for k in a]
print {k:len(d) for k in d}
结果{8.0: 2, 11.0: 1, 4.0: 3}

ssfjhh 发表于 2014-06-26 16:57

本帖最后由 ssfjhh 于 2014-06-26 17:08 编辑

回复 5# linustd


    都用脚本语言了,咱就别考虑这点性能了吧。
另外我把你的代码给改了下。arr =
dic={}
for item in arr:
    dic.setdefault(item, 0)
    dic += 1
print(dic)a =
dic = {}
for item in a:
    dic = dic.get(item, 0) + 1
print(dic)

timespace 发表于 2014-06-26 22:41

来围观了,如果是2.6+,直接用标准库:Python 2.7.5 (default, Mar9 2014, 22:15:05)
on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import Counter
>>> cnt = Counter()
>>> for k,v in cnt.iteritems():
...   print k, '-->', v
...
8.0 --> 2
11.0 --> 1
4.0 --> 3
页: [1] 2
查看完整版本: 【已解决】python如何统计数组的不同数字以及不同数字出现的次数