我想从一对清单上说:
a = ['str1', 'str2', 'str3', 'str4', 'str5']
b = [var1, var2, var3, var4, var5]能够创建多个字典,任意选择来自a (as关键字)和b(作为值)的元素对。在对此question的答复的评论中,我发现了以下方法:
full_set = dict(zip(a,b))
subset = {i:full_set[i] for i in a if i not in ['str2', 'str5']}生成子集字典:
{'str1': var1, 'str3': var3, 'str4': var4}这很好,但我想知道是否有一种同样短的或更短的方法从这两个列表构建子集字典,例如通过为我想要包含的元素指定列表索引,而不首先创建包含所有元素的完整字典。
对于上下文,我的vars引用了scikit-learn估测器对象。
发布于 2018-03-19 23:05:57
可能会将其转换为numpy数组,并使用如下所示的高级索引:
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返回:
{'str1': 1, 'str2': 2, 'str5': 5}发布于 2018-03-19 22:51:09
您可以将这两个语句合并为一个:
avoid = {'str2', 'str5'} # Sets have better lookup time :)
{k:v for k,v in zip(a,b) if k not in avoid}https://stackoverflow.com/questions/49373636
复制相似问题