我正在創建一個虛擬比賽,對于模擬的每一幀,我都有一個資料檔案,其中包含每個賽車手與領先點的距離,這意味著具有最低值的賽車手獲勝。
每場比賽結束后,我需要回傳中點的資料,找出最終獲勝者所在的比賽位置。在下面的示例中很容易看到獲勝者 (1) 處于第 3 位,距離為 600 ,但我正在努力如何在 Python 中做到這一點(每場比賽將有數百場比賽和更多的賽車手)。
RaceDistances = {1:600,2:300,3:450,4:1000,5:750}
uj5u.com熱心網友回復:
我們可以生成排名,.items()以獲取包含字典中鍵值對的元組串列。sorted()然后,我們使用和key引數按距離排序。然后,我們使用串列推導將排名讀入串列。
如果您只需要獲得一個特定玩家的排名,您可以使用.index([<id of player>]) 1:
race_distances = {1:600,2:300,3:450,4:1000,5:750}
player_ranks = [x for x, _ in sorted(race_distances.items(), key=lambda x: x[1])]
result = player_ranks.index(1) 1
print(result)
如果您要查找很多玩家的排名,最好創建一個字典,這樣查找速度會更快:
result = {elem: idx 1 for idx, elem in enumerate(player_ranks)}
print(result[1])
在這兩種情況下,都會列印:
3
uj5u.com熱心網友回復:
計算有多少更小的距離,然后加 1:
print(sum(d < RaceDistances[1]
for d in RaceDistances.values()) 1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/453474.html
