Wenn Sie müssen eine Liste Verständnis verwenden, dann müssen Sie auch jedes Wörterbuch neu zu erstellen:
matchesData = [{k: str(v) if k == 'match_date' else v for k, v in d.items()}
for d in matchesData]
oder
verwenden
matchesData = [dict(d, match_date=str(d['match_date']))
for d in matchesData]
Das erste Beispiel verwendet ein Wörterbuch co Mprehension, die einfach ein neues Wörterbuch aus dem alten erstellt, indem jedes Schlüssel/Wert-Paar durchlaufen wird. Für den Schlüssel 'match_date'
werden die Werte über die Funktion str()
übergeben. Dies bedeutet, dass der Schlüssel match_date
völlig optional ist.
Die zweite Version erfordert'match_date'
zu existieren, und erstellt eine Kopie des ursprünglichen Wörterbuch mit den dict()
function, in einem zusätzlichen Schlüsseladdiereinheit (die das ursprüngliche 'match_date'
Schlüssel-Wert-Paar aus d
ersetzen wird).
Demo:
>>> from pprint import pprint
>>> matchesData = [
... {'match_id': 1L, 'player_b_id': 2L, 'round_id': 1L, 'match_winner_id': 2L, 'match_date': datetime.date(2016, 3, 9), 'player_a_id': 1L, 'tournament_id': 1L},
... {'match_id': 2L, 'player_b_id': 4L, 'round_id': 1L, 'match_winner_id': 4L, 'match_date': datetime.date(2016, 3, 10), 'player_a_id': 3L, 'tournament_id': 1L}
... ]
>>> pprint([{k: str(v) if k == 'match_date' else v for k, v in d.items()} for d in matchesData])
[{'match_date': '2016-03-09',
'match_id': 1L,
'match_winner_id': 2L,
'player_a_id': 1L,
'player_b_id': 2L,
'round_id': 1L,
'tournament_id': 1L},
{'match_date': '2016-03-10',
'match_id': 2L,
'match_winner_id': 4L,
'player_a_id': 3L,
'player_b_id': 4L,
'round_id': 1L,
'tournament_id': 1L}]
>>> pprint([dict(d, match_date=str(d['match_date'])) for d in matchesData])
[{'match_date': '2016-03-09',
'match_id': 1L,
'match_winner_id': 2L,
'player_a_id': 1L,
'player_b_id': 2L,
'round_id': 1L,
'tournament_id': 1L},
{'match_date': '2016-03-10',
'match_id': 2L,
'match_winner_id': 4L,
'player_a_id': 3L,
'player_b_id': 4L,
'round_id': 1L,
'tournament_id': 1L}]