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

时间:2017-02-17 17:50:07

标签: python list dictionary mapping

如果我有这样的清单

l=[[(1, 2), (1, 3)], [(1, 2), (2, 3)], [(1, 3), (2, 3)]]

和这样的字典

d={(1, 2): 3.61, (1, 3): 5.0, (2, 3): 6.0}

我希望生成一个列表列表,其中包含与d中显示的关键字相关联的l中的值,如下所示

newlist=[[3.61,5.0],[3.61,6.0],[5.0,6.0]]

我怎么能这样做?

我的尝试是

newlist=[v for k, v in d.items() if l[[i]]==k for i in l]

但是会返回

TypeError: list indices must be integers, not list

1 个答案:

答案 0 :(得分:1)

您的尝试不起作用,因为首先结果应该是列表:您的列表理解将(如果可行)构建值列表。

此外,它只会在字典上循环一次(因为那是左private OAuth2AuthenticationProcessingFilter getOAuth2AuthenticationProcessingFilter() { // configure token Extractor BearerTokenExtractor tokenExtractor = new BearerTokenExtractor(); // configure Auth manager OAuth2AuthenticationManager manager = new OAuth2AuthenticationManager(); // configure RemoteTokenServices with your client Id and auth server endpoint manager.setTokenServices(remoteTokenServices); OAuth2AuthenticationProcessingFilter filter = new OAuth2AuthenticationProcessingFilter(); filter.setTokenExtractor(tokenExtractor); filter.setAuthenticationManager(manager); return filter; } 循环)。

您可以通过以下方式减少错误并提高效率:

for

如果所有元组都是字典newlist = [[d[x] for x in li] for li in l] 中的键,这将有效。如果不是这种情况,您可以使用d并指定默认值(例如.get(..)):

None