Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dict列表中的Python列表理解_Python_List_Dictionary_List Comprehension - Fatal编程技术网

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'
键值对)

演示: