首页 > 解决方案 > 将列表列表转换为整数列表

问题描述

Python新手问题:

我有一个这样的列表:

list1 = [[1.0, 0.0, 0.0],[0.0, 0.0, 1.0],[0.0, 0.0, 1.0],[0.0, 1.0, 0.0],[0.0, 0.0, 1.0]]

我想转换为另一个这样的列表(一个包含 1.0 所在索引的整数):

list2 = [0,2,2,1,2]

尝试这样做:

d = {[1.0, 0.0, 0.0]:0, 
     [0.0, 1.0, 0.0]:1,
     [0.0, 0.0, 1.0]:2}

list2 = map(d.get, list1)

但没有成功

标签: python-3.xlist

解决方案


pythondict的键不能是可变的,修改现有代码的最快方法是将tuples 作为键提供:

list1 = [[1.0, 0.0, 0.0],[0.0, 0.0, 1.0],[0.0, 0.0, 1.0],[0.0, 1.0, 0.0],[0.0, 0.0, 1.0]]
d = {(1.0, 0.0, 0.0):0, 
     (0.0, 1.0, 0.0):1,
     (0.0, 0.0, 1.0):2}
list2 = list(map(lambda x: d.get(tuple(x)), list1))

推荐阅读