次の辞書の python リストがあるとします。
results = [[{'id': '001', 'result': [0,0,0,0,1]},
{'id': '002', 'result': [1,1,1,1,1]},
{'id': '003', 'result': [0,1,1,None,None]},
{'id': '004', 'result': [0,None,None,1,0]},
{'id': '005', 'result': [1,0,None,1,1]},
{'id': '006', 'result': [0,0,0,1,1]}],
[{'id': '001', 'result': [1,0,1,0,1]},
{'id': '002', 'result': [1,1,1,1,1]},
{'id': '003', 'result': [0,1,1,None,None]},
{'id': '004', 'result': [0,None,None,1,0]},
{'id': '005', 'result': [1,0,None,1,1]},
{'id': '006', 'result': [1,0,1,0,1]}]
]
各グループのプレイヤー (「id」) 間の結果を比較し、一致するエントリの数に基づいてそれらを並べ替えることにより、「結果」の値に基づいて (python と golang の両方で) 新しい並べ替えられたリストを生成したいと思います ( None 結果は破棄され、カウントされません):
第 1 ラウンドと第 2 ラウンドで、001 と 006 には 9 つの一致する回答がありました:
001 = [0,0,0,0,1] 006 = [0,0,0,1,1] - 4 つの一致する回答。
2 回目のラウンドでは、001 と 006 に 5 つの一致する回答がありました:
001 = [1,0,1,0,1] 006 = [1,0,1,0,1] - 5 つの一致する回答
sorted_results = ['001','006','002','005','003','004']
'001' と '006' は、一致する結果の数が最も多い 9 個であるため、リストの最初の 2 つの項目です。