Если вы должны использовать список понимание, то вы должны также перестраивать каждый словарь:
matchesData = [{k: str(v) if k == 'match_date' else v for k, v in d.items()}
for d in matchesData]
или использовать
matchesData = [dict(d, match_date=str(d['match_date']))
for d in matchesData]
В первом примере используется словарь co mprehension, который просто создает новый словарь из старого путем циклизации каждой пары ключ-значение. Для ключа 'match_date'
значения передаются через функцию str()
. Это означает, что ключ match_date
является полностью необязательным.
Вторая версия требует'match_date'
существовать, и создает копию исходного словаря с dict()
function, добавляя в дополнительный ключ (который заменит оригинальную пару 'match_date'
ключ-значение из d
).
Демо:
>>> 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}]