我有一個這樣的串列:
games = [
{
"id": "5559cafd-6966-4465-af6f-67a784016b41",
"date": "2021-01-23 11:58:20",
"players": ["jowic42", "robot"],
"winner": None
},
...
{
"id": "80a0a0d2-059d-4539-9d53-78b3f6045943",
"date": "2021-01-24 14:23:59",
"players": ["jowic42", "robot"],
"winner": "jowic42"
}
]
我必須創建一個函式來回傳這樣的游戲串列摘要:
1 : 2021-01-23 11:58:20, jowic42 vs robot
2 : 2021-01-24 14:23:59, jowic42 vs robot, winner: jowic42
這是我想出的代碼:
def games_list(games):
for i in range(len(games)):
no = i 1
date = games[i].get('date')
winner = games[i].get('winner')
player1 = games[i].get('players')[0]
player2 = games[i].get('players')[1]
return (f'{no} : {date}, {player1} vs {player2}, winner:{winner}\n')
問題是它只回傳第一場比賽,日期格式為 {'2021-01-23 11:58:20'} 而不僅僅是文本 2021-01-23 11:58:20。我還希望回報的獲勝者部分在沒有顯示的情況下不顯示。我怎么能這樣做?
uj5u.com熱心網友回復:
您可以使用在每次迭代中附加資料的串列,并使用條件運算子根據其值添加獲勝者。請參見下面的代碼。
def games_list(games):
no = 0
results = []
for game in games:
no = no 1
date = game['date']
winner = game['winner']
player1 = game['players'][0]
player2 = game['players'][1]
line = str(no) ':' date ' ' player1 ' vs ' player2 (' winner:' winner if winner else '') '\n'
results.append(line)
return results
print(''.join(games_list(games)))
輸出:
1:2021-01-23 11:58:20 jowic42 vs robot
2:2021-01-24 14:23:59 jowic42 vs robot winner:jowic42
注意:使用@danh 的代碼并更新它,因為 danh 的代碼看起來更具可讀性。
uj5u.com熱心網友回復:
我的蟒蛇生銹了,但是...
def games_list(games):
i = 0
results = []
for game in games:
no = i 1
date = game['date']
winner = game['winner']
player1 = game['players'][0]
player2 = game['players'][1]
results.append((f'{no} : {date}, {player1} vs {player2}, winner:{winner}\n')
return results
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450104.html
標籤:python-3.x 列表 功能 字典
