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

根据其他字典的值对字典的值进行排序

根据其他字典的值对字典的值进行排序

绝地无双 2024-01-15 21:41:58
我有一本看起来像这样的字典..results = {'agunii2035': ['agunii3007', 'agunii2006', 'agunii2003', 'agunii3000'], 'agunii3007': ['agunii2035', 'agunii2006', 'agunii2003', 'agunii3000'], 'agunii2006': ['agunii2035', 'agunii3007', 'agunii2003', 'agunii3000'], 'agunii2003': ['agunii2035', 'agunii3007', 'agunii2006', 'agunii3000'], 'agunii3000': ['agunii2035', 'agunii3007', 'agunii2006', 'agunii2003']}我还有另一本字典,有这样的分数。score ={'agunii2035': [4, 4, 1, 3], 'agunii3007': [4, 3, 3, 1], 'agunii2006': [4, 3, 2, 2], 'agunii2003': [1, 3, 2, 1], 'agunii3000': [3, 1, 2, 1]}我想根据“分数”字典的值对“结果”字典的值进行排序。例如,对于键“agunii2035”,分数字典具有值 [ 4,4,1,3]。因此,我想对“结果”字典的值进行排序,以使用相同的键而['agunii3007', 'agunii2006', 'agunii3000','agunii2003']不是 ['agunii3007', 'agunii2006', 'agunii2003', 'agunii3000']。
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

results = {'agunii2035': ['agunii3007', 'agunii2006', 'agunii2003', 'agunii3000'],

 'agunii3007': ['agunii2035', 'agunii2006', 'agunii2003', 'agunii3000'],

 'agunii2006': ['agunii2035', 'agunii3007', 'agunii2003', 'agunii3000'],

 'agunii2003': ['agunii2035', 'agunii3007', 'agunii2006', 'agunii3000'],

 'agunii3000': ['agunii2035', 'agunii3007', 'agunii2006', 'agunii2003']}


score = {'agunii2035': [4, 4, 1, 3],

 'agunii3007': [4, 3, 3, 1],

 'agunii2006': [4, 3, 2, 2],

 'agunii2003': [1, 3, 2, 1],

 'agunii3000': [3, 1, 2, 1]}


ordered_results = {key:[item for _, item in

                   sorted(zip(score.get(key), value), reverse=True)]

                   for key, value in results.items()}


print(ordered_results)

输出


{'agunii2035': ['agunii3007', 'agunii2006', 'agunii3000', 'agunii2003'],

'agunii3007': ['agunii2035', 'agunii2006', 'agunii2003', 'agunii3000'],

'agunii2006': ['agunii2035', 'agunii3007', 'agunii3000', 'agunii2003'],

'agunii2003': ['agunii3007', 'agunii2006', 'agunii3000', 'agunii2035'],

'agunii3000': ['agunii2035', 'agunii2006', 'agunii3007', 'agunii2003']}


查看完整回答
反对 回复 2024-01-15
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

您需要做的就是使用从分数中查找字典的值作为对这样的结果进行排序的键。这是可行的,因为默认排序算法可以使用列表作为排序依据。key: values然后,它使用字典理解从排序列表中构建一个新字典。


results = {

    'agunii2035': ['agunii3007', 'agunii2006', 'agunii2003', 'agunii3000'],

    'agunii3007': ['agunii2035', 'agunii2006', 'agunii2003', 'agunii3000'],

    'agunii2006': ['agunii2035', 'agunii3007', 'agunii2003', 'agunii3000'],

    'agunii2003': ['agunii2035', 'agunii3007', 'agunii2006', 'agunii3000'],

    'agunii3000': ['agunii2035', 'agunii3007', 'agunii2006', 'agunii2003']

}


score = {

    'agunii2035': [4, 4, 1, 3],

    'agunii3007': [4, 3, 3, 1],

    'agunii2006': [4, 3, 2, 2],

    'agunii2003': [1, 3, 2, 1],

    'agunii3000': [3, 1, 2, 1]

}


sorted_results = {

    k: v

    for k, v

    in sorted(results.items(), key=lambda item: score[item[0]])

}


print(sorted_results)

# {'agunii2003': ['agunii2035', 'agunii3007', 'agunii2006', 'agunii3000'], 'agunii3000': ['agunii2035', 'agunii3007', 'agunii2006', 'agunii2003'], 'agunii2006': ['agunii2035', 'agunii3007', 'agunii2003', 'agunii3000'], 'agunii3007': ['agunii2035', 'agunii2006', 'agunii2003', 'agunii3000'], 'agunii2035': ['agunii3007', 'agunii2006', 'agunii2003', 'agunii3000']}



查看完整回答
反对 回复 2024-01-15
  • 2 回答
  • 0 关注
  • 25 浏览
慕课专栏
更多

添加回答

举报

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