京东二面笔试题
生成一个大文件ips.txt,要求1200行,
每行随机为172.25.254.0/24段的ip;
读取ips.txt文件统计这个文件中ip出现频率排前10的ip;
自己写的:
import random
f = open('ips.txt','w+')
for i in range(1200):
f.write('172.25.254.' + str(random.randint(1,255))+'\n')
f.seek(0.0) ##将指针指向0
s = {}
for i in f.readlines():
if i in s:
s[i] += 1
else:
s[i] = 1
sort_li = list(s.items())
sort = sorted(sort_li,key=lambda x:x[1])[-10:]
for i in sort[::-1]:
print(i[0],end='')
f.close()
结果:
172.25.254.149
172.25.254.180
172.25.254.17
172.25.254.158
172.25.254.156
172.25.254.201
172.25.254.225
172.25.254.81
172.25.254.28
172.25.254.98
大牛:
import random
def create_ip_file(filename):
ip = ['172.25.254.' + str(i) for i in range(0,255)]
with open(filename,'a+') as f:
for count in range(1200):
# print(random.sample(ip,1)) ##random.sample返回的是列表
f.write(random.sample(ip,1)[0] + '\n')
create_ip_file('ips.txt') ##调用函数,生成1200行
def sorted_by_ip(filename,count=10):
ips_dict = dict() ##创建一个空字典
with open(filename) as f:
for ip in f:
if ip in ips_dict:
ips_dict[ip] += 1
else:
ips_dict[ip] = 1
sorted_ip = sorted(ips_dict.items(),key=lambda x:x[1],reverse=True)[:count]
return sorted_ip
print(sorted_by_ip('ips.txt'))