基于另一个lis筛选字典项

2024-04-19 06:03:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个以元组为键的字典(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'}

Tags: 方法元素列表new字典my情况dict
1条回答
网友
1楼 · 发布于 2024-04-19 06:03:02

基本方法:带过滤器的dictcomp:

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)

过滤时,查找变得更有效

相关问题 更多 >