首页 > 解决方案 > 创建数组数组并使用字典

问题描述

我有两个清单:

x = ['1','5','X','9']
y = ['X','9','9P']

我这样组合:

z = [x,y]
print(z)

因此,“z”是两个列表的列表,它看起来像这样:

[['1', '5', 'X', '9'], ['X', '9', '9P']]

我有这本字典:

delqType = {
    '1'  : 0,
    '2'  : 3,
    '3'  : 4,
    '4'  : 5,
    '5'  : 6,
    '7'  : 19,
    '8'  : 21,
    '8A' : 20,
    '8P' : 16,
    '9'  : 22,
    '9B' : 18,
    '9P' : 15,
    'UR' : 23,
    'X'  : -99999
    }

我想将字典 delqType 应用于列表“z”以获得这个新列表(称为“t”),如下所示:

[[0, 6, -99999, 22], [-99999, 22, 15]]

我试过这段代码:

t = []
for i in range(len(z)):
    for j in range(len(z[i])):
        
        t.append(delqType[z[i][j]])
    next

但是我得到一个列表(而不是我想要的两个列表的列表):

[0, 6, -99999, 22, -99999, 22, 15]

使用字典转换后,如何获取包含元素的两个列表的列表?

标签: pythonlistdictionary

解决方案


您应该在 中创建嵌套列表t,每个嵌套列表对应一个z. 此外,迭代项目而不是索引会更简单:

t = []
for sub in z:
    t.append([])
    for item in sub:
        t[-1].append(delqType[item])

另一个不错的方法是使用itemgetter运算符将​​键列表映射到值列表:

from operator import itemgetter
t = [itemgetter(*sub)(delqType) for sub in z]

推荐阅读