我想在列表列表和列表的字典之间建立关联。 一方面,我有以下列表:
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提前帮忙。
答案 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]