Dict列表中的Python列表理解
我有一个清单,其中包含如下内容:Dict列表中的Python列表理解,python,list,dictionary,list-comprehension,Python,List,Dictionary,List Comprehension,我有一个清单,其中包含如下内容: [ {'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
[
{'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\u date”
修改为字符串日期。我知道这可以通过一个常规的循环来完成,但我正在努力学习列表的理解,并陷入了这一部分
我试过这样的方法但没有成功:
matchesData = [str(v) if k == 'match_date' else v for k, v in enumerate(matchesData)]
如果必须使用列表理解,则还必须重新生成每个词典:
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\u date'
,并使用创建原始字典的副本,添加一个额外的键(这将替换d
中的原始'match\u date'
键值对)
演示:
如果必须使用列表理解,则还必须重新生成每个词典:
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\u date'
,并使用创建原始字典的副本,添加一个额外的键(这将替换d
中的原始'match\u date'
键值对)
演示: