2017-08-24 84 views
0

我有一个元组作为键(my_dict)的字典,我也有一个我感兴趣的值列表(my_list)。基于另一个列表过滤字典项目

我想创建一个新的字典,我只保留元组的第一个元素包含在我的值列表中的情况下的元组和值。有没有快速的方法来做到这一点?

例如:

my_dict = {('1', '2'): 'a', ('1', '3'): 'b', ('2', '3'): 'c', ('3', '4'): 'd', ('4', '5'): 'a', ('4', '6'): 'b', ('5', '6'): 'e', ('6', '7'): 'f'} 

my_list = ['1', '2', '6'] 

输出应该是:

my_new_dict = {('1', '2'): 'a', ('1', '3'): 'b', ('2', '3'): 'c', ('6', '7'): 'f'} 
+1

酷的故事。你的问题是什么? –

回答

2

的基本方法:一个dict补偿与滤波:

In [807]: {k : v for k, v in my_dict.items() if k[0] in my_list} 
Out[807]: {('1', '2'): 'a', ('1', '3'): 'b', ('2', '3'): 'c', ('6', '7'): 'f'} 

如果您使用python2 ,你需要my_dict.iteritems()


为了提高效率,转换my_listset

my_set = set(my_list) 
res = {k : v for k, v in my_dict.items() if k[0] in my_set} 
print(res) 

查找变得过滤时更有效。

相关问题