Dict列表中的Python列表理解

时间:2016-04-17 15:49:50

标签: python list dictionary list-comprehension

我有一个包含这样的词组的列表:

@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'

1 个答案:

答案 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