fork download
  1. from collections import Counter
  2.  
  3. rank = {
  4. "ian": 7.5,
  5. "hikaru": 7.5,
  6. "gukesh": 7.5,
  7. "fabiano": 7,
  8. "pragg": 6,
  9. "vidit": 5,
  10. "alireza": 4.5,
  11. "abasov": 3
  12. }
  13.  
  14. pairing = [["ian", "hikaru"], ["pragg", "fabiano"], ["vidit", "abasov"], ["gukesh", "alireza"], ["hikaru", "gukesh"], ["alireza", "vidit"], ["abasov", "pragg"], ["fabiano", "ian"]]
  15.  
  16. ans = []
  17.  
  18. def dp(n, pairing, r):
  19. if (n < len(pairing)):
  20. for i in range(3):
  21. if (i == 0):
  22. r[pairing[n][0]] += 0
  23. r[pairing[n][1]] += 1
  24. dp(n+1, pairing, r)
  25. r[pairing[n][0]] -= 0
  26. r[pairing[n][1]] -= 1
  27.  
  28. if (i == 1):
  29. r[pairing[n][0]] += 0.5
  30. r[pairing[n][1]] += 0.5
  31. dp(n+1, pairing, r)
  32. r[pairing[n][0]] -= 0.5
  33. r[pairing[n][1]] -= 0.5
  34.  
  35. if (i == 2):
  36. r[pairing[n][0]] += 1
  37. r[pairing[n][1]] += 0
  38. dp(n+1, pairing, r)
  39. r[pairing[n][0]] -= 1
  40. r[pairing[n][1]] -= 0
  41.  
  42.  
  43. else:
  44. sorted_dict = dict(sorted(r.items(), key=lambda item: item[1], reverse=True))
  45. highest_value = sorted_dict[next(iter(sorted_dict))]
  46. result_dict = {key: value for key, value in sorted_dict.items() if value == highest_value}
  47. ans.append(result_dict)
  48. return
  49.  
  50. dp(0, pairing, rank)
  51.  
  52. def group_dicts(data):
  53. grouped_data = {}
  54. for item in data:
  55. key = tuple(item.items())
  56. if key in grouped_data:
  57. grouped_data[key] += 1
  58. else:
  59. grouped_data[key] = 1
  60.  
  61. return [[dict(item), count] for item, count in grouped_data.items()]
  62.  
  63. result = group_dicts(ans)
  64.  
  65. print(result)
Success #stdin #stdout 0.25s 76376KB
stdin
Standard input is empty
stdout
[[{'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]]