Thanks. With Snow Leopard or later, both the slash and the colon can be used as delimiters in the first instance, giving a flat list of alternating values and position texts. This reduces the list nesting by one level and does away with the delimiter changes in the first repeat:
set new_text to "09:1,8,11,14,21,24,27,34,37,40,47,50/qh:2,15,28,41/sf:3,13,16,26,29,39,42,52/kb09:4,17,30,43/gz:5,18,31,44/85w,,,x85:6,19,32,45/2bs9,yj:7,20,33,46/cts9yje7:9,22,35,48/ud:10,12,23,25,36,38,49,51/"
set astid to AppleScript's text item delimiters
set AppleScript's text item delimiters to {":", "/"}
set discretes_list to new_text's text items 1 thru -2
set discretes_count to (count discretes_list)
set text_list to {}
set AppleScript's text item delimiters to ","
repeat with i from 2 to discretes_count by 2
set item i of discretes_list to text items of item i of discretes_list
-- This just builds text_list to the required length. The correct values will go in below.
set text_list to text_list & result
end repeat
repeat with i from 1 to discretes_count by 2
set {this_text, these_positions} to items i thru (i + 1) of discretes_list
repeat with j from 1 to (count these_positions)
set item (item j of these_positions) of text_list to this_text
end repeat
end repeat
set AppleScript's text item delimiters to space
set old_text to text_list as text
set AppleScript's text item delimiters to astid
return old_text
There are other possibilities too with the way the pieces for text_list are put together, but they don’t seem to have any particular advantage.