2013-05-27 20 views
0
list = ('Bob', 11, 333, 453.3, 'Ted', 15, 999, 345.5, 'Jeff', 22, 122, 434.7) 

嗨,我試圖從上述信息建立前10名單。Python前十名單

第一個值:目標, 第二個值:助攻 第三個值:時間出場

我希望能夠找到在這種情況下,總 的最高目標,我想給用戶得到的結果是:

1)傑夫:22 2)泰德:15 3)鮑勃:11

+2

使用不同的數據結構。 – Blender

回答

1

您應該使用這裏的字典:

>>> lis = ('Bob', 11, 333, 453.3, 'Ted', 15, 999, 345.5, 'Jeff', 22, 122, 434.7) 
>>> dic = { lis[i]: list(lis[i+1:i+4]) for i in xrange(0,len(lis),4)} 
>>> dic 
{'Bob': [11, 333, 453.3], 
'Ted': [15, 999, 345.5], 
'Jeff': [22, 122, 434.7]} 

>>> sorted(dic,key = dic.get,reverse = True) 
['Jeff', 'Ted', 'Bob'] 

# To get keys as well as values use dict.items() 
>>> for k,v in sorted(dic.items(), key =lambda x:x[1] , reverse = True): 
    print k,v[0] 
...  
Jeff 22 
Ted 15 
Bob 11 
+0

字典絕對是要走的路,但我不確定我是否會使用元組,除非分數從未真正改變 – PurityLake

+0

@PurityLake好點,修正了這個問題。 –

+0

謝謝你們很棒。 @ Ashwini Chaudhary&PurityLake – user2371027

0
>>> from operator import itemgetter 
>>> data = ('Bob', 11, 333, 453.3, 'Ted', 15, 999, 345.5, 'Jeff', 22, 122, 434.7) 
>>> for x in sorted(zip(*[iter(data)]*4), key=itemgetter(1), reverse=True): 
     print x[0], x[1] 


Jeff 22 
Ted 15 
Bob 11