关于#python#的问题:按有关的城市名,实现输入、报表输出功能

设计一个程序,按国家管理有关的城市名,实现输入、报表输出功能。其中,输入时对一个国家每次可录入一个到多个不同的市;输出时的报表格式类似如下(给出的只是例子):美国:华盛顿、纽约、旧金山德国:柏林、法兰克福、汉堡

cities = {}

while True:
  country = input("请输入国家名(输入exit退出):")
  if country == "exit":
    break
  city = input("请输入城市名(多个城市用逗号分隔):")
  cities[country] = city.split(",")

print("城市清单:")
for country, city_list in cities.items():
  print(country + ":" + "、".join(city_list))

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7531390
  • 这篇博客也不错, 你可以看下Python爬虫:爬取国内所有高校名称、类型、官网
  • 除此之外, 这篇博客: Python数据结构13:散列(哈希)表,完美散列函数,解决冲突方法,开放寻址,负载因子,平均查找次数中的 6. 散列算法分析 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 散列在最好的情况下,可以提供O(1)常数级时间复杂度的查找性能。由于散列冲突的存在,查找比较次数就没有这么简单。

    评估散列冲突的最重要信息就是负载因子λ,一般来说:
    如果λ较小,散列冲突的几率就小,数据项通常会保存在其所属的散列槽中

    如果λ较大,意味着散列表填充较满,冲突会越来越多,冲突解决也越复杂,也就需要更多的比较来找到空槽;如果采用数据链的话,意味着每条链上的数据项增多

    如果采用线性探测的开放定址法来解决冲突(λ在0~1之间)

    成功的查找,平均需要比对次数为:12(1+11−λ)\frac{1}{2}(1 + \frac{1}{1 - λ})21(1+1λ1)
    失败的查找,平均需要比对次数为:12(1+(11−λ)2)\frac{1}{2}(1 + (\frac{1}{1 - λ})^2)21(1+(1λ1)2)

    如果采用数据链来解决冲突(λ可大于1)
    成功的查找,平均需要比对次数为:1+λ/2
    不成功的查找,平均比对次数为:λ