"Stephen Nelson-Smith" <sanel...@gmail.com> wrote

List 1        List 2        List 3
(1, cat)      (2, fish)     (1, cabbage)
(4, dog)     (5, pig)      (2, ferret)
(5, phone)  (6, horse)  (3, sausage)

Won't this result in the lowest number *per row* being added to the
new list?  Or am I misunderstanding how it works?

You are right.

I think the algorithm you need goes something like

- read the first item from each flie
- find the lowest item add it to the result
- keep taking items from that file until you find one greater than
- the next lowest item that you first found, put that  cvalue in place
 of the original lowest value
- repeat for the new lowest value until it matches the next lowest value
 and so on until all files are empty

To taker the trivial case of 2 files containing the odd and every other even
numbers respectively

A = [1, 3,  5,  7,...
B = [2, 6, 10...

lowA = 1
low2 = 2
load lowA into result, get next  from A -> 3
lowA becomes 3
load next lowest (lowB=2) into result, get next from B -> 6
lowB becomes 6
load next lowest (lowA=3) into result, get next from A -> 5
load 5 in result and get next from A -> 7
load 7 in lowA
load next lowest (lowB=6) into result, get next from B -> 10
load next lowest(lowA=7) into result, get next from A -> 9
etc until all files are empty


Obviously you can create a dictionary or list of your lowest values
and the matching file. You can simplify the algorithm by always
loading the latest value into lowX and alwayss checking for the
lowest value before storing it, but for high volumes the extra checks
will mount up.

HTH,


--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to