我有一个包含这样的词组的列表:
@Lob
String biography
我想知道如何将每个元素的[
{'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}
]
修改为字符串日期。我知道这可以通过常规循环完成,但我正在尝试学习列表理解并陷入这一部分。
我尝试过这样的事情没有成功:
'match_date'
答案 0 :(得分:3)
如果您必须使用列表推导,那么您还必须重建每个词典:
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]
第一个示例使用字典理解,它通过循环遍历每个键值对简单地从旧字典创建新字典。对于'match_date'
键,值通过str()
函数传递。这意味着match_date
键完全是可选的。
第二个版本要求 'match_date'
存在,并使用dict()
function创建原始字典的副本,并添加一个额外的密钥(将替换原始{来自'match_date'
)的{1}}键值对。
演示:
d