A Dictionary is a wonderful container and theoretically it should be faster than a switch when all you're looking at is the look-up time complexity. However, when the we ask "Which is faster?", time complexity doesn't answer that question. Instead, we should look at latency in terms of cache and memory efficiency rather than the number of compares to get a better understanding of how fast the Dictionary is compared to a switch.
A Dictionary is not stored in contiguous memory making it significantly less cache efficient. The hash table calculates different buckets of values and these values are stored in various locations in memory. Significant delay is added when a dictionary look-up misses the cache, which is a significant factor when looking at the delay of a Dictionary retrieval. A cache miss forces the CPU to read system memory (heap). The heap is the slowest memory in the system and there is no mechanism to hide this latency. You just have to wait.
Another problem associated with the memory structure of a Dictionary is that pre-fetch and prediction algorithms make incorrect decisions. You lose the benefit of this acceleration feature in the CPU.
A switch statement is stored in contiguous memory. On top of that, it is a compile-time element and is often optimized into a jump table that has O(1) time complexity. Therefore, a switch in compiler-optimized form has none of the cache and memory issues of a Dictionary and has the same O(1) time complexity. We can conclude that the switch will be faster.