--- a/packageship/application/query/depend.py
+++ b/packageship/application/query/depend.py
@@ -18,6 +18,7 @@ from gevent import monkey
 
 monkey.patch_all()
 
+from collections import Counter
 from packageship.application.common.constant import PROVIDES_NAME, FILES_NAME
 from packageship.application.query import Query
 from packageship.application.query.query_body import QueryBody
@@ -133,28 +134,28 @@ class RequireBase(Query):
         for rpm_info in query_rpm_infos:
             if rpm_info.get('requires'):
                 new_requires_list = []
-                component_bin_count_dict = dict()
+                component_bin_list = []
                 multi_binary_component_list = []
                 for component_name in rpm_info.get('requires'):
-                    self._convert_multi_binary_components(all_component_info_dict, component_bin_count_dict,
+                    self._convert_multi_binary_components(all_component_info_dict, component_bin_list,
                                                           component_name,
                                                           multi_binary_component_list, new_requires_list)
 
-                self._filter_multi_binary_components(component_bin_count_dict, multi_binary_component_list,
+                self._filter_multi_binary_components(component_bin_list, multi_binary_component_list,
                                                      new_requires_list)
                 rpm_info['requires'] = new_requires_list
             else:
                 rpm_info['requires'] = []
 
     @staticmethod
-    def _convert_multi_binary_components(all_component_info_dict, component_bin_count_dict, component_name,
+    def _convert_multi_binary_components(all_component_info_dict, component_bin_list, component_name,
                                          multi_binary_component_list, new_requires_list):
         """
         Add the uniquely determined binary package info to the result list
         Construct a dictionary of occurrences of binary packages and list of repeated binary packages
         Args:
             all_component_info_dict: all components dict
-            component_bin_count_dict: The number of times the binary package of the component is provided
+            component_bin_list: The list of the binary package of the component is provided
             component_name: component name
             multi_binary_component_list: list of repeated binary packages
             new_requires_list: result list
@@ -171,37 +172,33 @@ class RequireBase(Query):
                 # If the component is provided by multiple binary packages, record first and then filter
                 multi_binary_component_list.append(component_info)
             # Construct a dictionary of occurrences of binary packages
-            for component in component_info:
-                try:
-                    com_bin_name_count = component_bin_count_dict[component.get('com_bin_name')]
-                    component_bin_count_dict[component.get('com_bin_name')] = com_bin_name_count + 1
-                except KeyError:
-                    component_bin_count_dict[component.get('com_bin_name')] = 1
+            component_bin_list.extend([component.get('com_bin_name') for component in component_info])
         else:
             new_requires_list.append(dict(component=component_name))
             return
 
     @staticmethod
-    def _filter_multi_binary_components(component_bin_count_dict, multi_binary_component_list, new_requires_list):
+    def _filter_multi_binary_components(component_bin_list, multi_binary_component_list, new_requires_list):
         """
         Filter results based on component name and number of occurrences of binary packages
         Args:
-            component_bin_count_dict: The number of times the binary package of the component is provided
+            component_bin_list: The list of the binary package of the component is provided
             multi_binary_component_list: list of repeated binary packages
             new_requires_list: result list
 
         Returns: None
 
         """
+        component_bin_counter = Counter(component_bin_list)
         for component_list in multi_binary_component_list:
             max_count = 0
             final_component_info = dict()
             # Sort by name first, then filter the results according to the number of occurrences of binary packages
-            component_list.sort(key=lambda x: x.get('component'))
+            component_list.sort(key=lambda x: x.get('com_bin_name'))
             for component in component_list:
-                if component_bin_count_dict.get(component.get('com_bin_name')) > max_count:
+                if component_bin_counter.get(component.get('com_bin_name')) > max_count:
                     final_component_info = component
-                    max_count = component_bin_count_dict.get(component.get('com_bin_name'))
+                    max_count = component_bin_counter.get(component.get('com_bin_name'))
 
             new_requires_list.append(final_component_info)
 