(我很抱歉,此問題的以前版本顯示錯誤的功能,我需要修復,這已得到解決,我希望這個問題現在更有意義。)位置排名和處理Python中的關係
我有一個有分數的對象列表,我試圖根據這些分數給他們分配排名。以下是我如何輸出我的數據。
sorted_scores = [
('Apolo Ohno', 0),
('Shanie Davis', -1),
('Bodie Miller', -2),
('Lindsay Vohn', -3),
('Shawn White', -3),
('Bryan Veloso', -4)
]
我有一個領帶。現在,爲上面的對象分配位置的函數是一個簡單的for循環,它只將i
的值賦值爲對象的最終位置。
positions = {}
i = 1
for key, value in sorted_list:
# Since in my codebase the strings are IDs, I use the key to fetch the object.
if value is not None:
positions[key] = i
i += 1
所以這會明顯地返回:
positions = {
'Apolo Ohno': 1,
'Shanie Davis': 2,
'Bodie Miller': 3,
'Lindsay Vohn': 4,
'Shawn White': 5,
'Bryan Veloso': 6
}
希望這有一定的道理。問題的關鍵在於循環。是什麼讓更多的感覺是,如果返回他們像這樣:
positions = {
'Apolo Ohno': 1,
'Shanie Davis': 2,
'Bodie Miller': 3,
'Lindsay Vohn': 4, # Same value.
'Shawn White': 4, # Same value.
'Bryan Veloso': 6
}
我將如何修改上面的功能,要做到這一點,在根據記住,我能有任何數量的在任何給定的時間關係保持多少的我的成員排名說對象?最高排名應該是1,因此它可以顯示爲:<rank>/<total # of people>
在此先感謝。 :)
它總是有道理的,你只需要清理掉所有無關緊要的東西。繼續。成員排名與您的問題無關。失去foo_ranking和酒吧排名。首先:「我有一個元組列表(object_id,score)。給定關係可以發生,我該怎麼做......」。說明最高分/最低分是指0(或1)的等級。 – 2010-02-22 04:41:39
感謝您的幫助,我非常感謝您學習如何提出一個簡潔的問題,尤其是當涉及到這樣的主題時。:) – 2010-02-22 06:40:54
爲什麼您接受該答案而不是早期的等效答案的任何特定原因? – 2010-02-23 09:14:51