Code selections in
North America were based on existing
radio station identifiers. For example, radio stations in
Canada were already starting with "C", so it seemed logical to begin Canadian airport identifiers with Cxxx. The
United States had many pre-existing airports with established
mnemonic codes. Their ICAO codes were formed simply by prepending a K to the existing codes, as half the radio station identifiers in the US began with K. Most ICAO codes outside the US and Canada have a stronger geographical structure.
Most of the rest of the world could be classified in a more planned top-down manner, as they didn't have as much established aviation legacy. Thus Uxxx referred to the
Soviet Union with the second letter denoting the specific region within it, and so forth.
Europe had too many locations for only one starting letter, so it was split into Exxx for northern Europe and Lxxx for southern Europe. The second letter drilled down: EGxx was the
United Kingdom (G for Great Britain), EDxx was both
West Germany and
East Germany (D for Deutschland), LExx was
Spain (E for Espaņa), LAxx was Albania, and so on.
France was designated LFxx, as the counterpart EFxx was the unambiguously northern
Finland. (originally OFxx, as the more rigid geographical structure evolved over time; in the beginning, countries usually had "blocks" of codes; for example, Finland still has the country identifier OH- in its aircraft registrations)