Python Forum

Full Version: Occurence
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi, I want to print the occurence of each item . For example, you want 5 items in (1,1). Instead of printing 1,1,1,1,1 ; I want it to print 1:"5". I'm struggling with it for hours. Please could you check what s wrong in my function? Thanks!

def fonction3(n,a,b):
    import random
    L=[]
    L2=[]
    for k in range(n):
        r= random.randint(a,b)
        x= str(r)
        L.append(x)
        
    for item in L:
        count=L2.count(n)
        print(item + ":" + "\""+str(count)+"\"" )
    print("There are",(len(L)), "items")
    return L
First look at this, and take the time to understand it with the python documentation
>>> L = [1, 5, 2, 1, 2, 3, 5, 1, 5]
>>> sorted(set(L))
[1, 2, 3, 5]
Now replace lines 10 - 12 with
    for item in sorted(set(L)):
        count = L.count(item)
        print(item + ":" + "\""+str(count)+"\"" )
You can also remove L2 from the code.
For counting hashable objects there is built-in collections.Counter.

This enables counting and representing results in different ways:

>>> from collections import Counter
>>> nums = [1, 2, 3, 1, 2, 5, 6, 7, 7]
>>> counts = Counter(nums)
>>> counts
Counter({1: 2, 2: 2, 7: 2, 3: 1, 5: 1, 6: 1})
Print out counted items with their occurrance (sorted):

>>> print(*(f'{num}:{count}' for num, count in counts.most_common()), sep='\n')
1:2
2:2
7:2
3:1
5:1
6:1
How many values were counted:

>>> sum(counts.values())
9
How many different objects were counted:

>>> len(counts)
6
All values in sorted order:

>>> print(*counts.elements())
1 1 2 2 3 5 6 7 7
>>> list(counts.elements())
[1, 1, 2, 2, 3, 5, 6, 7, 7]
It doesn't throw an error if asked for object (key) not present, it just 'nicely' says that count is zero:

>>> counts[1]
2
>>> counts[100]
0
(Nov-08-2019, 08:18 AM)perfringo Wrote: [ -> ]For counting hashable objects there is built-in collections.Counter.

This enables counting and representing results in different ways:

>>> from collections import Counter
>>> nums = [1, 2, 3, 1, 2, 5, 6, 7, 7]
>>> counts = Counter(nums)
>>> counts
Counter({1: 2, 2: 2, 7: 2, 3: 1, 5: 1, 6: 1})
Print out counted items with their occurrance (sorted):

>>> print(*(f'{num}:{count}' for num, count in counts.most_common()), sep='\n')
1:2
2:2
7:2
3:1
5:1
6:1
How many values were counted:

>>> sum(counts.values())
9
How many different objects were counted:

>>> len(counts)
6
All values in sorted order:

>>> print(*counts.elements())
1 1 2 2 3 5 6 7 7
>>> list(counts.elements())
[1, 1, 2, 2, 3, 5, 6, 7, 7]
It doesn't throw an error if asked for object (key) not present, it just 'nicely' says that count is zero:

>>> counts[1]
2
>>> counts[100]
0