Srinivas Iyyer said unto the world upon 2005-01-27 01:17:
Dear Jacob, thank you for your suggestion.

however, i think my question was not clear. what i
meant to ask in my previous question was, how to know
which elements repeated and how many times they were
repeated.


while my question was flying, i did a small test:

took a list:

a

[1, 1, 2, 3, 4, 2, 2]

wanted to know which elements repeated and how many
times:

for i in range(len(a)):
        for k in range(len(a)):
                if i != k:
                        if a[i] == a[k]:
                                print a[i]
                                break

<SNIP>


In this very huge list (:-) kidding) of 7 elements, it is easy know by the above primitive code that there 1 s repeated two times, and 2 s repeated three times and finally 1 and 2 numbers are repeated in list a:

With sets option i get a list of unique elements, but
by no means i get to know which elements were repeated
and how many times. With the above primitive code , I
know that 1 and 2 are peated. However, in case where
there are thousands of entries, how can I get to kno
wich elements got repeated and how many times.


Do you see any flaws in this code, how can that be
made to look more pyhonian way.


Hope my question is clear now and appreciate your
suggestions.

Thank you in advance
Srini

<SNIP>

Hi Srini,

for the task of finding out which items are repeated and how many times, I'd do this:

<code>
def dups_in_list_report(a_list):
    '''Prints a duplication report for a list.'''

    items_dict = {}

    for i in a_list:
        if i in items_dict:
            items_dict[i] = items_dict[i] + 1
        else:
            items_dict[i] = 1

    for key in items_dict.copy():   # Try it without the .copy()
        if items_dict[key] == 1:    # and see what happens.
            del items_dict[key]

    dict_keys = items_dict.keys()
    dict_keys.sort()

    for key in dict_keys:
        print '%s occurred %s times' %(key, items_dict[key])

f = [1,1,2,3,3,3,3,4,4,4,4,4,4,4,5]

dups_in_list_report(f)
</code>

And, now that I get back on-line, I see that Chad posted the same basic idea. But, perhaps the extra stuff here is of use, too.

HTH,

Brian vdB

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to