如何在 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]))])
实际上,这在技术上不是您要求的。您的版本缺少一个结束符 ')',但我认为这只是一个错字。
所以,我有这段代码,如何在 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]))])
实际上,这在技术上不是您要求的。您的版本缺少一个结束符 ')',但我认为这只是一个错字。