返回并删除其元组键包含给定元素的所有keyvalue对

2024-09-29 17:22:26 发布

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

给定一个由2元元组键控的字典,我想返回其键包含给定元素的所有键值对。在

例如,字典可以是:

tupled_dict = {('a',1):1, ('a',2):0, ('b',1):1, ('c',4):0}

给定的元素是'a',那么应该返回的键值对是:

^{pr2}$

最快的代码是什么?在

编辑:

另外,作为一个相关的子问题,我感兴趣的是在给定键元素的情况下,以最快的方式删除所有这些键值对。显然,一旦我得到了上面的结果,我就可以使用一个循环来逐个删除每个字典项,但是我想知道是否有一种捷径可以做到这一点。在


Tags: 代码元素编辑字典方式情况dict感兴趣
3条回答

我还没有测试它的性能,但我建议您先使用for循环获取一个基线,然后使用dict comprehensions获取另一个基线。在

>>> {k:v for k, v in tupled_dict.iteritems() if k[0] == 'a'}
{('a', 1): 1, ('a', 2): 0}

即使“a”不是键元组中的第一个元素,此代码段也可以工作:

from operator import methodcaller

contains_a = methodcaller('__contains__', 'a')
keys = filter(contains_a, tupled_dict)
new_dict = dict(zip(keys, map(tupled_dict.get, keys))

要得到这些:

>>> {k: v for k, v in tupled_dict.iteritems() if 'a' in k}
{('a', 1): 1, ('a', 2): 0}

同样,要删除其他的:

^{pr2}$

相关问题 更多 >

    热门问题