我有一个产生以下内容的程序:
{'Jim': [4, 2, 6], 'Fred': [5, 3, 8], 'Neil': [5, 1, 7]}
我希望能够将[]中的数字从最高到最低排序。
e.g。
{'Jim': [6, 4, 2], 'Fred': [8, 5, 3], 'Neil': [7, 5, 1]}
我希望能够显示他们的名字,然后是他们的最高分,请告诉我如何做到这一点。我用Python编码
由于
答案 0 :(得分:2)
使用sorted
函数进行排序。 reverse=True
应按相反的顺序对数据进行排序,即从最高到最低。
>>> d = {'Jim': [4, 2, 6], 'Fred': [5, 3, 8], 'Neil': [5, 1, 7]}
>>> {i:sorted(j, reverse=True) for i,j in d.items()}
{'Jim': [6, 4, 2], 'Neil': [7, 5, 1], 'Fred': [8, 5, 3]}
>>> {i:max(j) for i,j in d.items()}
{'Jim': 6, 'Neil': 7, 'Fred': 8}
答案 1 :(得分:0)
使用词典理解和sorted
。
>>> d = {'Jim': [4, 2, 6], 'Fred': [5, 3, 8], 'Neil': [5, 1, 7]}
>>> {k:sorted(d[k], reverse=True) for k in d}
{'Jim': [6, 4, 2], 'Neil': [7, 5, 1], 'Fred': [8, 5, 3]}
这将为您提供一个新的字典,其中值(即列表)按降序排序。如果要对列表进行排序,请使用
>>> for k,v in d.iteritems():
... d[k] = sorted(v, reverse=True)
...
>>> d
{'Jim': [6, 4, 2], 'Neil': [7, 5, 1], 'Fred': [8, 5, 3]}
如果您使用的是Python3,请将d.iteritems()
更改为d.items()
。
我希望能够显示他们的名字,然后是他们的最高分,请告诉我如何做到这一点。我用Python编码
两个选项。如果我们假设d_sorted
是带有排序列表的字典,则迭代它并打印名称和每个列表的第一个元素。
>>> for name, scores in d_sorted.iteritems():
... print name, scores[0]
...
'Jim', 6
'Neil', 7
'Fred', 8
但是如果这就是你想做的一切,那么更简单的方法就是使用max
而不是对列表进行预先排序。假设d
是您的原始字典:
>>> for name, scores in d.iteritems():
... print name, max(scores)
...
'Jim', 6
'Neil', 7
'Fred', 8
答案 2 :(得分:0)
列表可以在原地排序,因此除非您需要新的字典,否则您不需要在每个值/列表上创建一个只调用list.sort
:
d = {'Jim': [4, 2, 6], 'Fred': [5, 3, 8], 'Neil': [5, 1, 7]}
for sub in d.values():
sub.sort(reverse=1)
print(d)
{'Neil': [7, 5, 1], 'Jim': [6, 4, 2], 'Fred': [8, 5, 3]}