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