Advertisement
Guest User

Untitled

a guest
Sep 17th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.87 KB | None | 0 0
  1. class A1:
  2. def __init__(self,filename):
  3. self.file = filename
  4. self.tup_li = self.read_file()
  5. self.unique_dict = self.get_unique_ip_data_list()
  6. self.ip_li = self.get_list_ip()
  7.  
  8. def read_file(self):
  9. my_list = []
  10. filename = self.file
  11. input_file = open(filename, 'r')
  12. contents = input_file.readlines()
  13. input_file.close()
  14. for i in contents:
  15. info = i.split('\t')
  16. my_tuple = (info[2],round(float(info[1])),int(info[7]))
  17. my_list.append(my_tuple)
  18. return my_list
  19.  
  20. def get_unique_ip_data_list(self):
  21. dict1 = {}
  22. my_list = self.tup_li
  23. for i in my_list:
  24. if i[0] not in dict1:
  25. dict1[i[0]] = [(i[1],i[2])]
  26. else:
  27. dict1[i[0]].append((i[1],i[2]))
  28. return dict1
  29.  
  30. def get_list_ip(self):
  31. list1 = []
  32. for key in self.unique_dict:
  33. data = self.unique_dict[key]
  34. size = int(data[-1][0]) // 10 + 1
  35. ip = IP_address(data,key,size)
  36. list1.append(ip)
  37. return list1
  38.  
  39. def swap(self,list1,a,b):
  40. list1[a], list1[b] = list1[b], list1[a]
  41.  
  42. def __str__(self):
  43. a_list = self.ip_li
  44. length = len(a_list)
  45. for i in range(length - 1, 0, -1):
  46. for j in range(i):
  47. if a_list[j] > a_list[j+1]:
  48. self.swap(a_list, j, j+1)
  49. string = "["
  50. if len(a_list) > 1:
  51. for i in a_list:
  52. string += "'" + i.__str__() + "', "
  53. string = string[:-2]
  54. string += "]"
  55. return string
  56. else:
  57. for i in a_list:
  58. string += "'" + i.__str__() + "'"
  59. string += "]"
  60. return string
  61.  
  62. class IP_address:
  63. def __init__(self,data_list,ip_key,size):
  64. self.data_list = data_list
  65. self.ip_key = ip_key
  66. self.size = size
  67.  
  68. def get_ip_address(self):
  69. return self.data_list
  70. def get_freq_list(self):
  71. value = 0
  72. a_list = []
  73. for num in range(self.size):
  74. for i in self.data_list:
  75. if i[0] // 10 == num:
  76. value += 1
  77. a_list.append(value)
  78. value = 0
  79. return a_list
  80.  
  81. def get_sum_list(self):
  82. value = 0
  83. my_list = []
  84. for num in range(self.size):
  85. for i in self.data_list:
  86. if i[0] // 10 == num:
  87. value += i[1]
  88. my_list.append(value)
  89. value = 0
  90. return my_list
  91.  
  92. #def get_avg_list(self):
  93. #list1 = self.get_freq_list()
  94. #list2 = self.get_sum_list()
  95. #a_list = []
  96. #for i in range(len(list1)):
  97. #if list1[i] == 0:
  98. #a_list.append(0)
  99. #else:
  100. #num = list2[i] / list1[i]
  101. #a_list.append(round(num,1))
  102. #return a_list
  103. def get_avg_list(self):
  104. value = 0
  105. value1 = 0
  106. my_list = []
  107. li = []
  108. for num in range(self.size):
  109. for i in self.data_list:
  110. if i[0] // 10 == num:
  111. li.append(i)
  112. value1 += i[1]
  113. if len(li) > 0:
  114. value = value1/len(li)
  115. my_list.append(round(value,1))
  116. else:
  117. my_list.append(0)
  118. value1 = 0
  119. value = 0
  120. li = []
  121. return my_list
  122.  
  123. def get_statistics(self):
  124. my_list=[]
  125. value = 0
  126. count = 0
  127. for i in self.data_list:
  128. value += i[1]
  129. count += 1
  130. average = value / len(self.data_list)
  131. my_list.append(self.ip_key)
  132. my_list.append(value)
  133. my_list.append(count)
  134. my_list.append(round(average))
  135. return my_list
  136.  
  137. def __str__(self):
  138. count = self.get_freq_list()
  139. value = self.get_sum_list()
  140. avg = self.get_avg_list()
  141. message = "{}:freq={},sum={},avg={}".format(self.ip_key,count,value,avg)
  142. return message
  143.  
  144. def __eq__(self,other):
  145. if isinstance(self,IP_address) and isinstance(other,IP_address) == True:
  146. return self.ip_key == other.ip_key
  147. else:
  148. return False
  149.  
  150. def __lt__(self,other):
  151. index1 = self.ip_key.rfind(".")
  152. s1 = int(self.ip_key[index1+1:])
  153. index2 = other.ip_key.rfind(".")
  154. s2 = int(other.ip_key[index2+1:])
  155. if s1 < s2:
  156. return True
  157. else:
  158. return False
  159.  
  160. my_ip_list = A1('trace05.txt')
  161. print(my_ip_list)
  162. print()
  163. my_ip_list = A1('trace20.txt')
  164. print(my_ip_list)
  165. print()
  166. my_ip_list = A1('trace33.txt')
  167. print(my_ip_list)
  168. print()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement