0

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

2 回答 2

2

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

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

结果:

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

实际上,从技术上讲,这不是您所要求的。您的版本缺少一个结束“)”,但我认为这只是一个错字。

于 2020-11-07T07:33:49.280 回答
0

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

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

如果想让 x_sliced 成为有序字典,只需键入orderedDict(x_sliced).


对于旧版本的 Python,或确保向后兼容:

 for key in x:
    x[key] = x_sliced[key]
于 2020-11-07T06:52:36.913 回答