gpt4 book ai didi

python - 如何缩短这个嵌套列表理解?

转载 作者:太空宇宙 更新时间:2023-11-03 21:11:52 27 4
gpt4 key购买 nike

这个问题是这个问题的延续:Comprehension list and output <generator object.<locals>.<genexpr> at 0x000002C392688C78>

我打算提出一个新问题。我在另一个字典中有一些字典。有时它们会变得相当大,因为我将它们保存在日志中,所以我想将它们的大小限制为 30 个“项目”(键:值)。

所以我尝试了这样的方法:(在示例中我将大小限制为两个)

main_dict = {
'A':{
'a1': [1,2,3],
'a2': [4,5,6]
},
'B': {
'b1': [0,2,4],
'b2': [1,3,5]
}
}

print([main_dict[x][i][:2] for x in main_dict.keys() for i in main_dict[x].keys()])

我得到的输出是这样的:

[[1, 2], [4, 5], [0, 2], [1, 3]]

我期望的是这样的:

['A':['a1':[1, 2],'a2':[4, 5]], 'B':['b1':[0, 2], 'b2':[1, 3]]]

或者类似的东西。它不一定是这样,但我需要知道什么值属于哪个字典,这在我最终得到的输出中并不清楚。

简单来说,我想要的就是缩短字典中的子字典。如果可能的话,优雅一点。

最佳答案

这是一种很好的干净方法,可以在一行中完成此操作,而无需更改原始字典:

print({key: {sub_k: ls[:2] for sub_k, ls in sub_dict.items()} for key, sub_dict in main_dict.items()})

Output:

{'A': {'a1': [1, 2], 'a2': [4, 5]}, 'B': {'b1': [0, 2], 'b2': [1, 3]}}

您最初的试验使用了列表理解 [],但本例实际上需要字典理解 {}

关于python - 如何缩短这个嵌套列表理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55011971/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com