2017-08-24 83 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) 

查找變得過濾時更有效。

相關問題