from collections import Counter rank = { "ian": 7.5, "hikaru": 7.5, "gukesh": 7.5, "fabiano": 7, "pragg": 6, "vidit": 5, "alireza": 4.5, "abasov": 3 } pairing = [["ian", "hikaru"], ["pragg", "fabiano"], ["vidit", "abasov"], ["gukesh", "alireza"], ["hikaru", "gukesh"], ["alireza", "vidit"], ["abasov", "pragg"], ["fabiano", "ian"]] ans = [] def dp(n, pairing, r): if (n < len(pairing)): for i in range(3): if (i == 0): r[pairing[n][0]] += 0 r[pairing[n][1]] += 1 dp(n+1, pairing, r) r[pairing[n][0]] -= 0 r[pairing[n][1]] -= 1 if (i == 1): r[pairing[n][0]] += 0.5 r[pairing[n][1]] += 0.5 dp(n+1, pairing, r) r[pairing[n][0]] -= 0.5 r[pairing[n][1]] -= 0.5 if (i == 2): r[pairing[n][0]] += 1 r[pairing[n][1]] += 0 dp(n+1, pairing, r) r[pairing[n][0]] -= 1 r[pairing[n][1]] -= 0 else: sorted_dict = dict(sorted(r.items(), key=lambda item: item[1], reverse=True)) highest_value = sorted_dict[next(iter(sorted_dict))] result_dict = {key: value for key, value in sorted_dict.items() if value == highest_value} ans.append(result_dict) return dp(0, pairing, rank) def group_dicts(data): grouped_data = {} for item in data: key = tuple(item.items()) if key in grouped_data: grouped_data[key] += 1 else: grouped_data[key] = 1 return [[dict(item), count] for item, count in grouped_data.items()] result = group_dicts(ans) print(result)
Standard input is empty
[[{'ian': 8.5, 'hikaru': 8.5, 'gukesh': 8.5}, 162], [{'hikaru': 8.5, 'gukesh': 8.5, 'fabiano': 8.5}, 81], [{'fabiano': 9.0}, 270], [{'hikaru': 9.0}, 837], [{'hikaru': 9.0, 'fabiano': 9.0}, 135], [{'hikaru': 9.5}, 729], [{'gukesh': 9.0}, 594], [{'gukesh': 9.0, 'fabiano': 9.0}, 135], [{'gukesh': 9.5}, 648], [{'hikaru': 9.0, 'gukesh': 9.0}, 216], [{'hikaru': 9.0, 'gukesh': 9.0, 'fabiano': 9.0}, 27], [{'hikaru': 8.5, 'gukesh': 8.5}, 108], [{'ian': 9.0}, 729], [{'ian': 8.5, 'gukesh': 8.5, 'fabiano': 8.5}, 81], [{'ian': 8.5, 'hikaru': 8.5, 'fabiano': 8.5}, 81], [{'ian': 9.0, 'hikaru': 9.0}, 243], [{'ian': 9.0, 'gukesh': 9.0}, 324], [{'ian': 8.5, 'hikaru': 8.5, 'gukesh': 8.5, 'fabiano': 8.5}, 54], [{'ian': 8.5, 'gukesh': 8.5}, 108], [{'gukesh': 8.5, 'fabiano': 8.5}, 27], [{'ian': 8.5, 'hikaru': 8.5}, 108], [{'hikaru': 8.5, 'fabiano': 8.5}, 27], [{'gukesh': 8.5}, 27], [{'hikaru': 8.5}, 27], [{'ian': 9.5}, 648], [{'ian': 9.5, 'gukesh': 9.5}, 81], [{'ian': 8.5, 'fabiano': 8.5}, 27], [{'ian': 8.5}, 27]]