How do we have one-to-one mapping given the key size differences? If public keys are 34 characters long, and private keys are 61 characters long, then the combinations of 34 characters is not sufficient to give each combination of 61 characters a unique pair.

My calculations show 8.6 * 10^89 combinations for a private key.  

And 9.0 * 10^59 combinations for a public key.

So how do we have one-to-one mapping?

(Please correct me if I am wrong).
We don't have a one-to-one mapping in the sense that you are talking about. But, for practical purposes, we have a one-to-one mapping. Yes, if someone tried to map every single key, after a few million centuries, they'd have a problem. But we won't have to worry about that until long after the stars burn out.

To find two keys that hash to the same ID, you'd have to try on average 2^80 keys. If you had a million computers, each capable of trying 1,000 keys a second, it would take 380,000 centuries to find a single match. And all you could do with those two keys was claim money sent to the same ID with either one, which would cause no harm at all.

Now, if you want to find a key that matches a key that actually has Bitcoins already, that's a much harder task. Say there are 10,000,000 IDs that have coins. The odds of a single key matching one of these 10,000,000 is 2^160/10,000,000 -- even with 1,000,000 computers each trying 1,000 keys a second, it would take billions of billions of centuries.

So for practical purposes, it's one-to-one.