我有一本字典如下:
{'Muguruza': [0, 0, 1, 12, 2, 15], 'Williams': [0, 1, 2, 15, 1, 12], 'Murray': [2, 2, 16, 143, 13, 142], 'Djokovic': [3, 1, 13, 142, 16, 143]}
我想根据相应列表中的值按递减顺序对其进行排序。
我必须按照排名的降序打印到屏幕上的摘要,其中排名是按照该顺序中的条件1-6(如列表中给出的)(比较项目1,如果相等比较项目2) ,如果等于比较项目3等,则注意到对于项目5和6,比较是相反的。)
我的输出应该如下:
Djokovic 3 1 13 142 16 143
Murray 2 2 16 143 13 142
Williams 0 1 2 15 1 12
Muguruza 0 0 1 12 2 15
威廉姆斯和默里在列表的索引0处对元素具有相同的值,因此它们将根据列表中下一个索引的值进行比较。
我怎样才能在Python中执行此操作?
答案 0 :(得分:2)
您可以将python列表与>
<
=
进行比较。就那么简单。它会做你想要的完全相同的事情。
此外,operator
是基于值
dict = {'Muguruza': [0, 0, 1, 12, 2, 15], 'Williams': [0, 1, 2, 15, 1, 12], 'Murray': [2, 2, 16, 143, 13, 142], 'Djokovic': [3, 1, 13, 142, 16, 143]}
import operator
print(sorted(dict.items(), key=operator.itemgetter(1)))
for i in sorted_list:
print(i[0], " ".join([str(j) for j in i[1]]))
返回
Williams 0 1 2 15 1 12
Murray 2 2 16 143 13 142
Djokovic 3 1 13 142 16 143
Muguruza 9 0 1 12 2 15
答案 1 :(得分:1)
这是一个可能的答案:
import operator
data = {
'Muguruza': [0, 0, 1, 12, 2, 15],
'Williams': [0, 1, 2, 15, 1, 12],
'Murray': [2, 2, 16, 143, 13, 142],
'Djokovic': [3, 1, 13, 142, 16, 143]
}
output = reversed(sorted(data.items(), key=operator.itemgetter(1)))
print("\n".join([(i[0] + " ".join([str(j) for j in i[1]])) for i in output]))
答案 2 :(得分:0)
你可以做到
d={'Muguruza': [0, 0, 1, 12, 2, 15], 'Williams': [0, 1, 2, 15, 1, 12], 'Murray': [2, 2, 16, 143, 13, 142], 'Djokovic': [3, 1, 13, 142, 16, 143]}
for v,k in sorted((v,k) for k,v in d.items()):
print(k,"\t".join(v))