如果我有一个值为列表的字典,如何根据索引对该列表进行切片?例如:
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}
但我想它可能效率低下,因为它重新构建了字典?
谢谢!
答案 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]