我有一些dictonaries。我希望类型迭代这个列表并将其映射到略有不同类型的字典。
原始字典:
{'Test Name':blah, 'Test': blah, 'Att a': blah, 'Att b': blah}
新词典:
{'Test Name':blah, 'Test': blah, 'Failure': failure, 'Project': project}
在原版中我只关心测试名称和测试的属性。在新词典中,我添加了一些额外的属性。
为此,我这样做:
mappedFailures = [];
for fixedFailure in fixedFailures:
mappedFailure = {'Test Suite': fixedFailure['Test Suite'],
'Test':fixedFailure['Test'], 'Failure':failure,
'Project': 'project'}
mappedFailures.append(mappedFailure);
这很容易阅读,但我想知道有更多的pythonic方式谢谢。
答案 0 :(得分:4)
您可以使用列表推导和dict constructor来实现非常短的
mappedFailures = dict((key, fixedFailure[key]) for key in ('Test Name', 'Test'))
mappedFailures['Failure'] = failure
mappedFailures['Project'] = project
答案 1 :(得分:4)
这是列表理解的经典用例:
def map_failure(ff):
return {'Test Suite': ff['Test Suite'], 'Test': ff['Test'],
'Failure': failure, 'Project': 'project'}
mappedFailures = [map_failure(ff) for ff in fixedFailures]
答案 2 :(得分:1)
mappedFailures
实际上是一个dicts列表。为此,您只需要使用列表推导来迭代每个fixedFailure
并从中构建一个新的字典。
mappedFailures = [
{
'Test Name': fixedFailure['Test Name'],
'Test': fixedFailure['Test'],
'Failure': failure,
'Project': project,
}
for fixedFailure in fixedFailures
]