为了账号安全,请及时绑定邮箱和手机立即绑定

根据相似度最高的值对字典列表进行排序

根据相似度最高的值对字典列表进行排序

Go
慕田峪7331174 2021-06-21 13:15:47
鉴于以下 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]}]            ]我想根据“结果”的值生成一个新的排序列表(在 python 和 golang 中),方法是比较每个组中的玩家(“id”)之间的结果,然后根据匹配条目的数量对它们进行排序( None 结果将被丢弃且不计算在内):在第一轮和第二轮中,001 和 006 有九个匹配答案:001 = [0,0,0,0,1] 006 = [0,0,0,1,1] - 四个匹配答案。在第二轮中,001 和 006 有五个匹配的答案:001 = [1,0,1,0,1] 006 = [1,0,1,0,1] - 五个匹配的答案sorted_results = ['001','006','002','005','003','004']'001' 和 '006' 是列表中的前两项,因为它们的匹配结果数最多 - 九个。
查看完整描述

2 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

如果您按“相同结果的最高数量”对这些项目进行排序,则会得到以下结果:


['003', '004', '005', '006', '001', '002']

如果您的意思是其他意思(即不是“相同结果的最高数量”),请澄清您的问题。此外,您可以简单地修改该max_identical函数,使其根据您对相似的定义进行操作。


上面的结果是用以下方法计算的:


from collections import defaultdict



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]}]



def max_identical(lst):

    counts = defaultdict(lambda: 0)

    for x in lst:

        if x is not None:

            counts[x] += 1

    return max(counts.values())



results = sorted(results, key=lambda x: max_identical(x['result']))


print [x['id'] for x in results]


查看完整回答
反对 回复 2021-06-28
  • 2 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信