如何将列表的值转换为字典的值

时间:2019-09-10 15:32:27

标签: python-3.x

我有一个清单。其实这是单词的索引。

lst = [[1, 2, 3],
       [4, 5],
       [6]]

,我有字典。词典的值是单词的向量(word2vec),每个向量具有相同的维数(当然)。

dic={1:array([0.1, 0.2, 0.3]), 
     2:array([0.4, 0.5, 0.6]), 
     3:array([0.7, 0.8, 0.9]),
     4:array([1.0, 1.1, 1.2]),
     5:array([1.3, 1.4, 1.5]),
     6:array([1.6, 1.7, 1.8])}

我想将列表的值(单词索引)转换成字典的值(单词向量),这与字典是一对(如下所示)。

lst = [[[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9]],
       [[1.0, 1.1, 1.2], [1.3, 1.4, 1.5]],
       [[1.6, 1.7, 1.8]]]

你能帮我吗?

2 个答案:

答案 0 :(得分:0)

一个人可以使用以下帮助功能:

def word2vec(list_param, dict_param):
    for i in range(len(list_param)):
        for j in range(len(list_param[i])):
            list_param[i][j] = dict_param[list[i][j]]

列表将根据需要具有更新的值。强烈建议不要使用诸如list,dict ...之类的保留关键字作为变量名。

答案 1 :(得分:0)

使用map是因为我很喜欢:)

ll = [[1, 2, 3], [4, 5], [6]]
dd = {1:array([0.1, 0.2, 0.3]), 
      2:array([0.4, 0.5, 0.6]), 
      3:array([0.7, 0.8, 0.9]),
      4:array([1.0, 1.1, 1.2]),
      5:array([1.3, 1.4, 1.5]),
      6:array([1.6, 1.7, 1.8])}

res = []
for item in ll:
  res.append(list(map(lambda x: list(dd[x]), item)))
print(res)

给予

[
 [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9]],
 [[1.0, 1.1, 1.2], [1.3, 1.4, 1.5]],
 [[1.6, 1.7, 1.8]]
]