我有一个字典,其中元组为键(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'}
答案 0 :(得分:2)
基本方法:带有过滤器的dict
comp:
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_list
转换为set
:
my_set = set(my_list)
res = {k : v for k, v in my_dict.items() if k[0] in my_set}
print(res)
过滤时查找效率会提高。