如果我有这样的清单
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
答案 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