[Tutor] Re: Unique Items in Lists

Brian van den Broek bvande at po-box.mcgill.ca
Fri Jan 28 05:41:16 CET 2005


Kent Johnson said unto the world upon 2005-01-27 16:08:
> Brian van den Broek wrote:

<SNIP>

>> Finally, in the first instance, I was aiming for the OP's stated end. 
>> To make this more general and reusable, I think I'd do:
>>
>> <code>
>> def get_list_dup_dict(a_list, threshold=1):
>>
>>     items_dict, dup_dict = {}, {}   # Question below
>>
>>     for i in a_list:
>>         items_dict[i] = items_dict.get(i, 0) + 1
>>
>>     for k, v in items_dict.iteritems():
>>         if v >= threshold:
>>             dup_dict[k] = v    #Question below
>>
>>     return dup_dict
>>
>> def print_list_dup_report(a_list, threshold=1):
>>
>>     dup_dict = get_list_dup_dict(a_list, threshold)
>>     for k, v in sorted(dup_dict.iteritems()):
>>         print '%s occurred %s times' %(k, v)
>> </code>
>>
>>
>> My question (from comment in new code):
>>
>> Since I've split the task into two functions, one to return a 
>> duplication dictionary, the other to print a report based on it, I 
>> think the distinct dup_dict is needed. (I do want the 
>> get_list_dup_dict function to return a dict for possible use in other 
>> contexts.)
> 
> 
> You could have a function that gets all of the counts, and then filter 
> on threshold when you print.

<SNIP>

>> Am I overlooking yet another dict technique that would help, here? Any 
>> other improvements?

Thanks Kent. Above the last snip would indeed be one such improvement! 
(How'd I miss that?)

Best,

Brian vdB



More information about the Tutor mailing list