In the "select from list" function, the "value" is something between value and index. This value must be unique but can be anything, number, text or function.
I think about two ways to correct your problem :
Dirty but easy way: Play with the INT function
In your list, just use a decimal value to make each value unique and when you use the value just ad INT(value). The "Electrical - Other" value can be 20.1 and "Civil - Asphalt" can be 20.3 so they're unique, but is you ask the INT of them they return 20 as you want. Of course, that works if you only need integer values...
Cleaner but indirect way: Use a CHOOSE and OPTIONINDEX
In the list, use a unique value for each to avoid the error, but this value doesn't mind. To have a value, use the OPTIONINDEX function to return the position in the list and use the CHOOSE function to give the value you need.
In this case, the function must be something like that :
%(#000000)[= CHOOSE ( OPTIONINDEX ("list"), 15, 20, 25, 30, 15, 20....)]
This is a little harder to modify, because if you want to ad an item in the list or re-order the list, you must change carefully the CHOOSE function.