我想比較列表中的一個元素。我達到了我的目標,但它不是一個寫得很好的代碼。請看我的代碼,並給我一些建議。順便說一句,我有幾個其他問題Python 3:比較同一列表中的兩個元素
players_list = ({'player_name': 'Tom',
'player_flag': 'is_human',
'player_decision': None,
'player_points': 1}
{'player_name': 'Peter',
'player_flag': 'is_computer',
'player_decision': None,
'player_points': 2}
{'player_name': 'John',
'player_flag': 'is_computer',
'player_decision': None,
'player_points': 0.5}
{'player_name': 'Greg',
'player_flag': 'is_computer',
'player_decision': None,
'player_points': 2}
)
players_list = sorted(players_list, key = lambda k: k['player_points'], reverse = True)) #(1)
iterator = 0 #(2)
while players_list[iterator]['player_points'] == players_list[iterator + 1]['player_points']:
iterator += 1
print(' >> The Winner Is...', end = ' ')
if iterator == 0:
print(players_list[0]['player_name'].upper(), '!!!') #(3)
elif iterator > 0:
print('There Is a Draw Between ', end = '')
for j in range (0, iterator + 1):
print(players_list[j]['player_name'], end = ', ') # (4))
print() # (5)
(1):這是在這種情況下,最好的方式來排序字典的值我的名單?
(2):這是我的想法來比較解決問題。您能否提出您的意見?如果需要,請提出更好的解決方案?
(3):在這種情況下,什麼樣的印刷方式是最「pythonic」?
print(players_list[0]['player_name'].upper(), '!!!') # 1
print(%s!!! (players_list[0]['player_name'].upper())) # 2
print({player_name}!!!.format(player_name = players_list[0] ['player_name']).upper()) # 3
(4):如何在一行中不顯示','在一行顯示玩家列表? (5)我在一行顯示播放器後,使用空的print()來顯示'/ n'。有更好的解決方案嗎?
非常感謝
這將更適合[代碼評論](http://codereview.stackexchange.com/) – Mel
我打算這樣做時,我會準備好所有的代碼。這是我知道應該糾正的最後一個問題 – mathsicist
空的'print()'?這不是一個問題,它是一個完全有效的代碼。我不確定你會找到更好的方式來打印空行。 – Mel