如何在 python 中对 orderedDict 中的值元素进行切片?

How to slice value element in orderedDict in python?

所以,我有这段代码,如何在 orderedDict 中分割值元素?

import numpy as np
from collections import OrderedDict
x = OrderedDict()
val= np.array((1,2))
key= 40
x[key]= val
x[key]= val,3
print(x)

returns :

OrderedDict([(40, (array([1, 2]), 3))]) #  <- i want to slice this 2nd value element 

目标输出:

OrderedDict([(40, array([1, 2])])  

如果您使用的是 Python 3.6+ 或更高版本,则可以使用它:

x_sliced = {k:x[k][:1] for k in x}

如果要使 x_sliced 成为一个 orderedDict,只需键入 orderedDict(x_sliced)


对于 Python 的旧版本,或确保 backward-compatibility:

 for key in x:
    x[key] = x_sliced[key]

@Caina 很接近,但他的版本不太正确,因为它在结果中留下了一个额外的收集层。这是 returns 您要求的确切结果的表达式:

x_sliced = OrderedDict({k:x[k][0] for k in x})

结果:

OrderedDict([(40, array([1, 2]))])

实际上,这在技术上不是您要求的。您的版本缺少一个结束符 ')',但我认为这只是一个错字。