我有一个词典列表,我想用它来创建另一个词典列表,稍作修改。
这就是我想要做的事情:
entries_expanded[:] = [{entry['id'], myfunction(entry['supplier'])} for entry in entries_expanded]
所以我最终得到了另一个词典列表,只是改变了一个词条。
上面的语法被破坏了。我怎么能做我想做的事?
如果我要扩展代码示例,请告诉我。
答案 0 :(得分:2)
这不是你想要的吗?
entries_expanded[:] = [
dict((entry['id'], myfunction(entry['supplier'])))
for entry in entries_expanded
]
你可以把它想象成一个创建元组的生成器,然后是一个列表理解,它会产生字典:
entryiter = ((entry['id'], entry['supplier']) for entry in entries_expanded)
tupleiter = ((id, myfunction(supplier)) for id, supplier in entryiter)
entries_expanded[:] = [dict(t) for t in tupleiter]
或者,正如另一个答案所暗示的那样:
entryiter = ((entry['id'], entry['supplier']) for entry in entries_expanded)
tupleiter = ((id, myfunction(supplier)) for id, supplier in entryiter)
entries_expanded[:] = [
dict((('id', id), ('supplier', supplier)))
for id, supplier in tupleiter
]
答案 1 :(得分:1)
要为每个字典创建一个新字典,您需要重新设置密钥:
entries_expanded[:] = [{'id':entry['id'], 'supplier':myfunction(entry['supplier'])} for entry in entries_expanded]
(如果我已经理解你正在尝试做什么,无论如何)
答案 2 :(得分:0)
使用列表理解
entries_expanded= [{'id':entry['id'], 'supplier':myfunction(entry['supplier'])} for entry in entries_expanded]