在python中列出列表中的数据

时间:2018-02-02 06:53:51

标签: python list summarize

在python中我需要以这种方式汇总count_list中的数据(如直方图):

"""
number | occurence
  0 | *
  1 | **
  2 | ***
  3 | **
  4 | **
  5 | *
  6 | *
  7 | **
  8 | ***
  9 | *
  10 | **
"""

但我得到了错误的输出:

"""
number | occurence
  0 | 
  1 | **
  2 |
  3 |
  4 |
  5 |
  6 | **
  7 |
  8 |
  9 |
  10 | **
"""

这是我的代码:

import random
random_list = []
list_length = 20
while len(random_list) < list_length:
    random_list.append(random.randint(0,10))
count_list = [0] * 11
index = 0

while index < len(random_list):
   number = random_list[index]
    count_list[number] = count_list[number] + 1
    index = index + 1


def summerizer():
    index = 0
    print count_list
    print '"'*3
    print 'number  |  occurrence'
    while index < len(count_list):
      print '%s' %' '*(7),
      print index,#the problem is here
      print ' | ',#and here
      print '%s' %'*'*(count_list[index])
      index += 1
    print '%s'%'"'*3


summerizer()

3 个答案:

答案 0 :(得分:0)

试试这个

import random
random_list = []
list_length = 20
while len(random_list) < list_length:
    random_list.append(random.randint(0,10))
dic={}
for i in random_list:
    dic[i]=dic.get(i,0)+1
print 'number  |  occurrence'
for i in range(0,11):
    if(i not in dic):    
        print i,"|",'%s' %'*'*(0)
    else:
        print i,"|",'%s' %'*'*(dic[i])

Out put

  

[9,8,4,2,5,4,8,3,5,6,9,5,3,8,6,10,10,10,9]

number  |  occurrence
0 |
1 | 
2 | **
3 | **
4 | **
5 | ***
6 | **
7 | 
8 | ****
9 | ***
10 | **

答案 1 :(得分:0)

此方法使用collections.Counter

from collections import Counter
import random

random_list = []
list_length = 20

while len(random_list) < list_length:
    random_list.append(random.randint(0,10))

c = Counter(random_list)

print('number  |  occurrence')
def summerizer(dic):
    for v,d in dic.items():
        print(v, '|', '%s'%'*'*c[v])

summerizer(dic)

答案 2 :(得分:0)

是的,我找到了问题

它来自ide本身! 这是关于UDACITY android应用程序的一个测验,其中的嵌入式编译器做出了错误的答案..

我现在从Android上的pydroid应用程序尝试的相同代码也得到了我需要的答案,没有任何改变

感谢您试图帮助所有人

`import random
 random_list = []
 list_length = 20
 while len(random_list) < list_length:
  random_list.append(random.randint(0,10))
 count_list = [0] * 11
 index = 0

 while index < len(random_list):
  number = random_list[index]
  count_list[number] = count_list[number] + 1
  index = index + 1

def summerizer():
 index = 0
 print count_list
 print '"'*3
 print 'number  |  occurrence'
 while index < len(count_list):
  print '%s' %' '*(7),
  print index,
  print ' | ',
  print '%s' %'*'*(count_list[index])
  index += 1
 print '%s'%'"'*3

summerizer()`