|
@@ -59,17 +59,22 @@ class Material():
|
|
|
"""
|
|
|
@classmethod
|
|
|
def sort_keyword_data(cls, data):
|
|
|
+
|
|
|
data = [json.loads(item) for item in data]
|
|
|
+
|
|
|
|
|
|
groups = defaultdict(list)
|
|
|
for item in data:
|
|
|
groups[item['keyword_name']].append(item)
|
|
|
-
|
|
|
- unique_names = list(groups.keys())
|
|
|
- priority_names = [name for name in unique_names if name in unique_names]
|
|
|
- remaining_names = [name for name in unique_names if name not in priority_names]
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+ priority_names = list(groups.keys())
|
|
|
+
|
|
|
+
|
|
|
+ for name in priority_names:
|
|
|
+ random.shuffle(groups[name])
|
|
|
+
|
|
|
+
|
|
|
result = []
|
|
|
max_length = max(len(groups[name]) for name in priority_names)
|
|
|
|
|
@@ -77,9 +82,6 @@ class Material():
|
|
|
for name in priority_names:
|
|
|
if i < len(groups[name]):
|
|
|
result.append(groups[name][i])
|
|
|
-
|
|
|
- for name in remaining_names:
|
|
|
- result.extend(groups[name])
|
|
|
|
|
|
|
|
|
sorted_list = [json.dumps(item, ensure_ascii=False) for item in result]
|