How will this Verilog line be synthesized?
I'll assume you're working in an FPGA. If you're talking about an ASIC, wait for an answer from someone who knows something about ASICs. 

First, is data a wire or a reg, and is it connected to a pin?
If it's a wire, the line should begin with the word "assign".
If it's a reg, the line should be included in some kind of always or initial or similar type of block. It would also be better to use '&lt;=' in place of '=' to get simulation to better match synthesis.

If data is an inout pin, this will synthesize as a tristate buffer.

If data is an internal register, this is probably not synthesizable code, unless you are working in a very old FPGA (XC4000 era or earlier?). What is actually produced is at the whim of your synthesis tool and might be different for different tools. It would be much preferrable to set to all 0's or all 1's, and then explicitly OR or AND together all the different drivers for the data bus.

In either case, if you are simulating this code, rather than synthesizing it, and there are no other drivers for data, the simulator is quite right to set the value to 'x', because there's no way to predict which way the tri-stated signal will drift in actual use. 

Most simulators simply simulate the code exactly as it is, rather than guess what it will synthesize to and then simulate that. That means that un-synthesizable code will simulate perfectly well, even though they won't necessarily behave correctly when implemented in your FPGA.