Python 基于多个字典转换数据

Python 基于多个字典转换数据,python,numpy,dictionary,Python,Numpy,Dictionary,我有一个数据矩阵(106行57列),其中所有数据都是['a'、'c'、'g'、't'],每列也有一个字典。我需要做的是根据每一列自己的字典为每一列应用一个转换 我试过类似的方法,但结果不正确 result = [] for x in range(data.shape[0]): individual_map = np.empty(data.shape[1], dtype=int) for y in range(data.shape[1]): for key, va

我有一个数据矩阵(106行57列),其中所有数据都是
['a'、'c'、'g'、't']
,每列也有一个字典。我需要做的是根据每一列自己的字典为每一列应用一个转换

我试过类似的方法,但结果不正确

result = []
for x in range(data.shape[0]):
    individual_map = np.empty(data.shape[1], dtype=int)

    for y in range(data.shape[1]):
        for key, val in mapping[y].items():
            individual_map[data[x,y] == key] = val

    result.append(individual_map)
谢谢

编辑:示例数据只有3列,所以我只有3个字典。在实际案例中,有57个栏目和57本词典。 样本数据:

data = [['a','c','g'],['t','g','c']]
dictionaries = [{'a':1,'c':2,'g':3,'t':4},{'a':3,'c':1,'g':2,'t':4},{'a':2,'c':3,'g':4,'t':1}]
result = [[1,1,4],[4,2,3]]
如果有,

data = [['a','c','g'],['t','g','c']]
dictionaries = [{'a':1,'c':2,'g':3,'t':4},{'a':3,'c':1,'g':2,'t':4},{'a':2,'c':3,'g':4,'t':1}]
预期的结果是

result = [[1,1,4],[4,2,3]]
您可以通过两个嵌套的列表理解()来获得它:


使用row,col遍历2D数组。使用col loop变量获取所需的字典,并使用row和col获取数据值。

能否显示数据和字典的示例?你得到了什么?你期望得到什么?我想数据不是一个列表,而是一个numpy.array(否则它没有形状),你是对的。我忘了提那件事了。但我没有得到任何类型的错误,结果是唯一错误的。一般建议:考虑熊猫这样的任务。数据帧是一种非常有用的数据结构,适用于许多任务。我认为熊猫的解决方案在几个月后会更好地理解…工作真的很好!我仍然是Python的初学者,所以用一行代码就完成了这项工作,这令人难以置信。事实上,列表理解功能非常强大。快乐编码:-)
result = [[dictionaries[j][item] for j, item in enumerate(row)] for row in data]
def data():
data = [['a','c','g'],['t','g','c']]
dictionaries = [{'a':1,'c':2,'g':3,'t':4},{'a':3,'c':1,'g':2,'t':4},{'a':2,'c':3,'g':4,'t':1}]

result = []
for row in range(0, len(data)):
    temp = [0]* len(data[0])
    for col in range(0, len(data[0])):
        temp[col] = (dictionaries[col])[data[row][col]]
    result.append(temp)
print result