Srinivas, You can't sort a string, since it's immutable. You can, however, sort a list. To sort your table by the third element, you can do something like this:
>>> table = (("apple", "fruit", "denmark"), ... ("mummy", "antique", "egypt"), ... ("taj", "wonder", "india"), ... ("f-16", "fighter", "usa")) >>> sorter = [(elt[2], elt) for elt in table] >>> sorter.sort() >>> tuple([elt[1] for elt in sorter]) (('apple', 'fruit', 'denmark'), ('mummy', 'antique', 'egypt'), ('taj', 'wonder', 'india'), ('f-16', 'fighter', 'usa')) # I edited the table output edited for clarity When you sort a list of tuples, the default is to sort the list by the first element in the tuples. If you make a list where the element you want to sort on is first in all of the tuples (see the 'sorter = ...' line), then sort that list, then remove the element you added (the 'tuple([...])' line), you are left with a list which is ordered the way you want it. Peace Bill Mill bill.mill at gmail.com On Thu, 27 Jan 2005 08:29:10 -0800 (PST), Srinivas Iyyer <[EMAIL PROTECTED]> wrote: > 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 <[EMAIL PROTECTED]> 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 > > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor