Sorry, I am using ArcMap 10.3.1.
I have used a double concatenation string in python to catch 99.9% of my lookups, first using two fields against the lookup (for a general lookup), and then a 3 field lookup for specific lookups in the table.
In the lookup table I have a full look up reference (Utility-Type-Material-Diameter --> Water-Pressure Main-PVC-100) but I also have partial references (Water-Pressure Main-PVC-), so using a python dictionary to input a unit rate I only use the Type and Material, then I use Type, Material, and Diameter. After the rates are in I multiply against the length. Its not a perfect system but it allows for any diameters not found in the lookup table per type and material to be given a rate.
The attached text file using python