Python排序值列表,然后按值排序

2024-06-09 10:31:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典,名字是一个键,一个包含分数的列表是一个值。你知道吗

我试着对列表中的值进行排序,然后按值对整个字典进行排序,这样它就可以按最高分排序。你知道吗

这是字典:

{'Dave_Wright': [10], 'Clara_Johnson': [9, 7], 'Amy_Kukri': [9, 8, 9], 'Eden_Jia': [10]}

我正在尝试使用从stackoverflow的其他地方找到的代码,但是我还没有找到一个与此相关的问题。你知道吗

print(d2)
d2 = sorted(d2.items(), key = itemgetter(1))
for key in d2:
    print(key, d2[key])

我可能是小题大做,但我真的被难住了。你知道吗


Tags: key列表字典排序名字分数d2print
3条回答

这将按您指定的顺序打印词典(假设您首先表示最高分):

d = {'Dave_Wright': [10], 'Clara_Johnson': [9, 7], 'Amy_Kukri': [9, 8, 9], 'Eden_Jia': [10]}

print ('\n'.join(
    '{}, {}'.format(key, sorted(value, reverse=True))
    for key, value in sorted(d.items(), key=lambda x:x[1], reverse=True)))

结果:

Dave_Wright, [10]
Eden_Jia, [10]
Amy_Kukri, [9, 9, 8]
Clara_Johnson, [9, 7]

仅仅itemgetter(1)不会进行排序。您需要为此编写自己的密钥:

def get_return(key_value):
    return list(sorted(key_value[1])), key_value[0]

d2 = sorted(d2.items(), key=get_return, reverse=True)

for key, value in d2:
    print(key, value)

Herespectre-d推荐的按键/值对词典排序的有用教程

字典通常不可排序;不过您可以对字典中的键值对进行排序。你知道吗

for name, scores in sorted(d2.items(), key=lambda x: max(x[1]), reverse=True):
    print name, sorted(scores)  # reverse=True?

相关问题 更多 >