从列表的字典中返回包含每个键的前N​​个列表条目的字典

考虑以下列表字典 d:

{
'ra': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'decl': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'source_id': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'priority': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
}

我想为每个字典键返回一个包含 <= 列表中前 N 个值的字典。因此,如果N = 4,它应该返回

{
'ra': [0, 1, 2, 3],
'decl': [0, 1, 2, 3],
'source_id': [0, 1, 2, 3],
'priority': [0, 1, 2, 3],
}

或者如果列表少于 4 个条目,则返回完整列表。有点像.head(N)适用于数据帧。

我可以将字典转换为数据框,执行.head(N)操作并将其转换回字典,但似乎必须有一种更简单/更 Pythonic 的方法来做到这一点。

回答

我会使用字典理解来寻找一些东西

lessen = {
'ra': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'decl': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'source_id': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'priority': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
}
limit = 4
new = {k:v[:limit] for k,v in lessen.items()}

输出

{'ra': [0, 1, 2, 3], 'decl': [0, 1, 2, 3], 'source_id': [0, 1, 2, 3], 'priority': [0, 1, 2, 3]}


以上是从列表的字典中返回包含每个键的前N​​个列表条目的字典的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>