Python - 将列表列表映射到字典

时间:2017-10-27 10:42:54

标签: python list dictionary

我想在列表列表和列表的字典之间建立关联。 一方面,我有以下列表:

list_1=[['new','address'],['hello'],['I','am','John']]

另一方面,我有一个列表字典:

dict={'new':[1,3,4], 'address':[0,1,2], 'hello':[7,8,9], 'I':[1,1,1], 'John':[1,3,4]}

我想得到的是一个新的列表列表(列表),如下所示:

list_2=[[[1,3,4],[0,1,2]],[[7,8,9]],[[1,1,1],[0,0,0],[1,3,4]]]

这意味着list_1中的每个字都被映射到字典dict中的每个值,更重要的是,请注意'am'list_1中找不到的dict [0,0,0]取值model{ for(d in 1:n){ alpha0[d] ~ dnorm(66.6, 0.01) alpha1[d] ~ dnorm(0.3, 0.01) alpha2[d] ~ dnorm(100, 0.01) alpha3[d] ~ dnorm(0.2, 0.01) beta0[d] ~ dnorm(35, 0.01) beta1[d] ~ dnorm(80, 0.01) tau[d] ~ dgamma(0.3,1) for(k in 1:Ndat) { y[k,d] ~ dnorm(mu[k,d], tau[d]) mu[k,d] <- ((alpha0[d]/(1 + exp(-alpha1[d]*(28-beta0[d])))) + (alpha2[d]/(1 + exp(-alpha3[d]*(28-beta1[d]))))) } } }

Thanx提前帮忙。

2 个答案:

答案 0 :(得分:1)

使用dict.get使用字典查询重建列表列表,如果找不到密钥则使用默认值:

list_1=[['new','address'],['hello'],['I','am','John']]

d={'new':[1,3,4], 'address':[0,1,2], 'hello':[7,8,9], 'I':[1,1,1], 'John':[1,3,4]}

list_2=[[d.get(k,[0,0,0]) for k in sl] for sl in list_1]

print(list_2)

结果:

[[[1, 3, 4], [0, 1, 2]], [[7, 8, 9]], [[1, 1, 1], [0, 0, 0], [1, 3, 4]]]

答案 1 :(得分:0)

list_1=[['new','address'],['hello'],['I','am','John']]
dict={'new':[1,3,4], 'address':[0,1,2], 'hello':[7,8,9], 'I':[1,1,1], 'John':[1,3,4]}
list_2=[[dict[x] for x in l if x in dict] for l in list_1]

如果你想要一个列表,即使密钥在dict

中不存在
list_2=[[dict.get(x, []) for x in l] for l in list_1]