Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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
python';双重理解';听写清单_Python - Fatal编程技术网

python';双重理解';听写清单

python';双重理解';听写清单,python,Python,给定如下所示的数据结构“posts”,是否有一种pythonesque/dict理解/高效的方法来创建一个dict,其中每个id都是posts的键: posts=[{“ids”:[1,2],…},{“ids”:[5,6,7],…},…] want={1:{ids:[1,2],…},2:{“ids:[1,2],…},5:{“ids:[5,6,7],…},6:{“ids:[5,6,7],…},…},…} #千里迢迢 d={} 在职人员: 对于post中的id['id']: d[id]=邮政编码 #一

给定如下所示的数据结构“posts”,是否有一种pythonesque/dict理解/高效的方法来创建一个dict,其中每个id都是posts的键:

posts=[{“ids”:[1,2],…},{“ids”:[5,6,7],…},…]
want={1:{ids:[1,2],…},2:{“ids:[1,2],…},5:{“ids:[5,6,7],…},6:{“ids:[5,6,7],…},…},…}
#千里迢迢
d={}
在职人员:
对于post中的id['id']:
d[id]=邮政编码
#一个理解-在每个循环上创建和处理dict
d={}
在职人员:
d、 更新({id:post for post['id']}中的id)
我希望下面的内容能起作用,但是高层看不到底层的帖子

#ilegal:post不可用
d={id:post for id in post['id']for post in post}

有什么想法吗?我经常看到这样的情况,循环看起来很难看

您可以使用字典理解:

posts = [{"ids":[1,2]}, {"ids":[5, 6, 7]}]
result = {i:b for b in posts for i in b['ids']}
输出:

{1: {'ids': [1, 2]}, 2: {'ids': [1, 2]}, 5: {'ids': [5, 6, 7]}, 6: {'ids': [5, 6, 7]}, 7: {'ids': [5, 6, 7]}}

谢谢,这很酷,我把内部和外部的理解搞混了-首先使用外部循环似乎是违反直觉的。我也尝试过解决它,但你太快了:)伟大的解决方案你的for循环在上一个解决方案中以错误的方式循环-也就是说,它们应该与第一个解决方案的顺序相同(从上到下->从左到右)。