作为字典值的切片列表

时间:2021-07-02 16:55:41

标签: python

如果我有一个值为列表的字典,如何根据索引对该列表进行切片?例如:

a = {"x": [1,2,3,4], "y": [10,20,30,40]}

我有索引列表,称为 indexes = [0,2]。 我想得到 a = {"x": [1,3], "y": [10,30]}。如何在不重建字典的情况下做到这一点? 我知道我可以做类似的事情

{key: dict_name[key][indexes] for key in dict_name}

但我想它可能效率低下,因为它重新构建了字典?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用字典推导循环遍历原始列表 items,然后对于值中的每个子列表使用列表推导从您的 indexes 中索引出来

>>> {k: [v[i] for i in indexes] for k,v in a.items()}
{'x': [1, 3], 'y': [10, 30]}

答案 1 :(得分:1)

您可以通过使用切片赋值来修改现有字典来更改列表内容:

for lst in a.values():
    lst[:] = [lst[i] for i in indices]