[Tutor] Unique Items in Lists

Srinivas Iyyer srini_iyyer_bio at yahoo.com
Thu Jan 27 17:29:10 CET 2005


Dear Danny, thank you for ur help. But a basic
question ?

In a table, more specifically a matrix 3X3,

Apple    Fruit    Denmark
F-16     Fighter  USA
Taj      Wonder   India
Mummy    Antique  Egypt


IF I have to sort on country, it should be

Apple    Fruit    Denmark
Mummy    Antique  Egypt
Taj      Wonder   India
F-16     Fighter  USA


How can I sort by binding Denmark to fruit and apple
as a string. String does not support sort function.
Sincerly I dont know how to sort to follow your
suggestion. can you please help.. sorry for asking
basic question.

thank you




--- Danny Yoo <dyoo at hkn.eecs.berkeley.edu> wrote:

> 
> 
> On Wed, 26 Jan 2005, Srinivas Iyyer wrote:
> 
> > I have a list with 4 columns and column1 elements
> are unique.  I wanted
> > to extract unique elements in column3 and and
> place the other elements
> > of the column along with unique elements in column
> 4 as a tab delim
> > text.
> >
> > Table:
> >
> > col1    col2    col3   col4
> > A       Apple     5    Chennai
> > B       Baby     11    Delhi
> > I       Baby*     1    Delhi
> > M       Dasheri+  5    Mumbai
> > K       Apple     12   Copenhagen
> 
> 
> [Meta: we seem to be getting a run of similar
> questions this week. Scott
> Melnyk also asked about grouping similar records
> together:
>
http://mail.python.org/pipermail/tutor/2005-January/035185.html.]
> 
> 
> Hi Srinivas,
> 
> I see that you are trying to group records based on
> some criterion.  You
> may find the problem easier to do if you fist do a
> sort on that criterion
> column: that will make related records "clump"
> together.
> 
> 
> For your sample data above, if we sort against the
> second column, the
> records will end up in the following order:
> 
> ###
> A       Apple     5    Chennai
> K       Apple     12   Copenhagen
> B       Baby      11   Delhi
> I       Baby      1    Delhi
> M       Dasheri   5    Mumbai
> ###
> 
> 
> In this sorting approach, you can then run through
> the sorted list in
> order.  Since all the related elements should be
> adjacent, grouping
> related lines together should be much easier, and
> you should be able to
> produce the final output:
> 
> ###
> Apple     A,K     5,12    Chennai,Copenhagen
> Baby      B,I     1,11    Delhi
> Dasheri   M       5       Mumbai
> ###
> 
> without too much trouble.  You can do this problem
> without dictionaries at
> all, although you may find the dictionary approach a
> little easier to
> implement.
> 
> 
> 
> 
> > A dictionary option does not work
> 
> A dictionary approach is also very possible.  The
> thing you may be stuck
> on is trying to make a key associate with multiple
> values.  Most examples
> of dictionaries in tutorials use strings as both the
> keys and values, but
> dictionaries are more versatile: we can also make a
> dictionary whose
> values are lists.
> 
> 
> For example, here is a small program that groups
> words by their first
> letters:
> 
> ###
> >>> def groupAlpha(words):
> ...     groups = {}
> ...     for w in words:
> ...         firstLetter = w[0]
> ...         if firstLetter not in groups:
> ...             groups[firstLetter] = []
> ...         groups[firstLetter].append(w)
> ...     return groups
> ...
> >>> groupAlpha("this is a test of the emergency
> broadcast system".split())
> {'a': ['a'],
>  'b': ['broadcast'],
>  'e': ['emergency'],
>  'i': ['is'],
>  'o': ['of'],
>  's': ['system'],
>  't': ['this', 'test', 'the']}
> ###
> 
> 
> If you have more questions, please feel free to ask.
> 
> 



		
__________________________________ 
Do you Yahoo!? 
Meet the all-new My Yahoo! - Try it today! 
http://my.yahoo.com 
 



More information about the Tutor mailing list