如何使用字典替换列表内部列表中的项目?

时间:2018-03-28 17:26:53

标签: python python-3.x list numpy dictionary

如何使用字典替换列表内部列表中的项目?

这很好用

import numpy as np
ss_dict = {
        1 : np.array([1,0,0,0,0,0]),
        2 : np.array([0,1,0,0,0,0]),
        3 : np.array([0,0,1,0,0,0]),
        4 : np.array([0,0,0,1,0,0]),
        5 : np.array([0,0,0,0,1,0]),
        6 : np.array([0,0,0,0,0,1]),
    }

l=np.array([1,2,3])
l = np.array([ss_dict[i] for i in l])
print(l)

输出:

[[1 0 0 0 0 0]
 [0 1 0 0 0 0]
 [0 0 1 0 0 0]]

但这会导致错误TypeError: unhashable type: 'numpy.ndarray'

l=np.array([[1,2,3],[4,5,6]])
l = np.array([ss_dict[i] for i in (j for j in l)])
print(l)

我想输出:

[
[[1 0 0 0 0 0]
 [0 1 0 0 0 0]
 [0 0 1 0 0 0]]

 [[0 0 0 1 0 0]
 [0 0 0 0 1 0]
 [0 0 0 0 0 1]]
 ]

1 个答案:

答案 0 :(得分:1)

这应该有所帮助。您只需要在列表解析中创建列表理解。

res = np.array([[ss_dict[j] for j in i] for i in l])

结果:

[[[1 0 0 0 0 0]
  [0 1 0 0 0 0]
  [0 0 1 0 0 0]]

 [[0 0 0 1 0 0]
  [0 0 0 0 1 0]
  [0 0 0 0 0 1]]]