python高级练习题:统计域名【难度:3级】:

故事

您有一个日志文件中的域名列表,指示计算机访问这些站点的次数.但是,该列表也显示了子域,但您只想查看主站点和访问总数.例如,6.clients-channel.google.comapis.google.com应该统计为google.com.

任务

编写一个带有两个参数的函数count_domains():
*domains是一个域名列表,显示每个域的访问请求数,当您从日志中复制它时

  • 和可选的min_hits,它定义了出现在输出列表上的最小访问次数.如果没有给出,请将其视为"0".

返回准备打印的字符串,以递减顺序显示具有访问总数的站点.

  • 产出要求:*
  • 输出应显示括号中访问总数的站点,
  • 网站应该只有2个级别(例如ebay.com),除了.co.xx.com.xx类型的域名,它们应该有3个级别(例如amazon.co.jp),
  • 列表应按递减顺序排序,
  • 如果两个站点具有相同的访问次数,请按字母顺序对其进行排序,
  • 条目应以换行符分隔(\ n)

示例

domains_list ='''\
* .amazon.co.uk 89
* 名为.doubleclick.net 139
* .fbcdn.net 212
* 带.in-addr.arpa 384
* .l.google.com 317
1.client-channel.google.com 110
6.client-channel.google.com 45
a.root-servers.net 1059
apis.google.com 43
clients4.google.com 71
clients6.google.com 81
connect.facebook.net 68
edge-mqtt.facebook.com 56
graph.facebook.com 150
mail.google.com 128
mqtt-mini.facebook.com 47
ssl.google-analytics.com 398
star-mini.c10r.facebook.com 46
staticxx.facebook.com 48
www.facebook.com 178
www.google.com 162
www.google-analytics.com 127
www.googleapis.com 87 ''"

count_domains(domains_list,500)='''\
root-servers.net(1059)
google.com(957)
facebook.com(525)
google-analytics.com(525)'''

我的其他练习题

如果你喜欢这个kata,请尝试我的其他练习题! ?

* 欢迎翻译!*

编程目标:

def count_domains(domains, min_hits):
    pass

测试样例:

# domains_list is the same as in the example
Test.assert_equals(count_domains(domains_list, 500), '''\
root-servers.net (1059)
google.com (957)
facebook.com (525)
google-analytics.com (525)''')
Test.assert_equals(count_domains(domains_list, 1000), 'root-servers.net (1059)')