问题描述
所以,我有这段代码,如何在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)
返回:
OrderedDict([(40,(array([1,2]),3))]) # <- i want to slice this 2nd value element
目标输出:
OrderedDict([(40,array([1,2])])
解决方法
@Caina很接近,但是他的版本不太正确,因为它在结果中留下了额外的收集层。这是返回您所请求的确切结果的表达式:
x_sliced = OrderedDict({k:x[k][0] for k in x})
结果:
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版本,或为了确保向后兼容:
for key in x:
x[key] = x_sliced[key]