首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用一对列表中的一些但不是所有元素创建多个dicts

使用一对列表中的一些但不是所有元素创建多个dicts
EN

Stack Overflow用户
提问于 2018-03-19 22:47:14
回答 2查看 49关注 0票数 0

我想从一对清单上说:

代码语言:javascript
运行
复制
a = ['str1', 'str2', 'str3', 'str4', 'str5']
b = [var1, var2, var3, var4, var5]

能够创建多个字典,任意选择来自a (as关键字)和b(作为值)的元素对。在对此question的答复的评论中,我发现了以下方法:

代码语言:javascript
运行
复制
full_set = dict(zip(a,b))
subset = {i:full_set[i] for i in a if i not in ['str2', 'str5']}

生成子集字典:

代码语言:javascript
运行
复制
{'str1': var1, 'str3': var3, 'str4': var4}

这很好,但我想知道是否有一种同样短的或更短的方法从这两个列表构建子集字典,例如通过为我想要包含的元素指定列表索引,而不首先创建包含所有元素的完整字典。

对于上下文,我的vars引用了scikit-learn估测器对象。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-19 23:05:57

可能会将其转换为numpy数组,并使用如下所示的高级索引:

代码语言:javascript
运行
复制
import numpy as np

a = np.array(['str1', 'str2', 'str3', 'str4', 'str5'])
b = np.array([1,2,3,4,5])

indices = [0, 1, 4]

d = dict(zip(a[indices],b[indices]))

D返回:

代码语言:javascript
运行
复制
{'str1': 1, 'str2': 2, 'str5': 5}
票数 0
EN

Stack Overflow用户

发布于 2018-03-19 22:51:09

您可以将这两个语句合并为一个:

代码语言:javascript
运行
复制
avoid = {'str2', 'str5'} # Sets have better lookup time :)
{k:v for k,v in zip(a,b) if k not in avoid}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49373636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档