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

问题描述

所以,我有这段代码,如何在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]