在filter()中使用has_key()的最快方法?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

在filter()中使用has_key()的最快方法?

2019-01-21 11:24:35 1430 1

我知道这是python 2中一种非常有效的方式,可以交叉2个词典

filter(dict_1.has_key, dict_2.keys())
但是has_key()从Python3中删除了,所以我无法真正使用快速filter()和has_key()功能。我现在正在做的是:

[key for key in dict_2 if key in dict_1]

取消 提交回答
全部回答(1)
  • 一码平川MACHEL
    2019-07-17 23:26:04

    您可以在Python 3.x中使用运算符,而不是在Python 2 中。有了filter,它在3.x中提供了一个迭代器,你可以使用dict.__contains__。也没有必要调试dict.keys:

    res = filter(dict_1.__contains__, dict_2) # lazy

    print(list(res))

    [2, 3]

    一种等效但不太美观lambda的解决方案:

    res = filter(lambda x: x in dict_1, dict_2) # lazy
    生成器表达式是第三种选择:

    res = (x for x in dict_2 if ix in dict_1) # lazy
    对于非惰性方法,您可以使用set.intersection:

    res = set(dict_1) & set(dict_2) # {2, 3}


    可以这样做:

    d1 = {1 : 1, 2 : 2}
    d2 = {1 : 3, 2 : 4, 3 : 5}

    common = list(d1.keys() & d2.keys())
    print(common)
    产出
    [1, 2]

    0 0
相关问答

1

回答

参数名Filter是什么意思?

2022-11-03 11:07:40 37浏览量 回答数 1

0

回答

column_filter和limit哪个先执行

2022-10-14 23:48:32 80浏览量 回答数 0

1

回答

Servlt中A filter有什么特性?

2022-08-12 11:55:34 160浏览量 回答数 1

1

回答

Servlt中A filter有什么用?

2022-08-12 11:43:50 160浏览量 回答数 1

1

回答

Filter是什么呀?

2022-03-30 15:01:20 220浏览量 回答数 1

1

回答

如何配置filter的url-pattern搞不定了请高手点拨下。403.10 禁止访问:配置无效 

2020-05-28 13:28:24 261浏览量 回答数 1

1

回答

array_map,array_walk和array_filter之间的区别

2020-01-15 16:25:04 306浏览量 回答数 1

1

回答

PHP 函数 filter_val() 用法

2019-12-10 18:13:52 555浏览量 回答数 1

1

回答

请问一下大家生产环境用的filter还是二级索引?

2019-09-16 17:36:02 455浏览量 回答数 1

0

回答

[Filnk] 关于合并的keyed stream的sink问题

2018-11-23 22:14:06 1586浏览量 回答数 0
文章
问答
问答排行榜
最热
最新
相关电子书
更多
建立联系方法之一
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载