Find Common Key in Dicts

找到两个dict的公共key (From Python Cookbook)

基本写法:

for key1 in dict1.iterkeys():
    if dict2.has_key(key1):
        print key1

利用的基本函数: iterkeys() 遍历dict的key部分,dict1.has_key(key1)判断key1是否出现在dict1中

更优雅的写法:

list1 = [for key1 in dict1 if key1 in dict2]

或者

list1 = filter(dict1.has_key, dict2.keys())

下面两种写法:

 1.for key1 in dict1.keys():
        if key1 in dict2.keys():
             print key1

 2.for key1 in dict1.keys():
        if dict2.has_key(key1):
             print key1

在执行效率上有很大的区别

假设dict1含有N1个元素,dict2含有N2个元素

写法1会遍历dict1和dict2中的所有元素,因此执行效率是O(N1*N2)

写法2会遍历dict1,然后利用dict2中的hash table去查找元素,因此执行效率是O(N1)

另外据说filter(dict1.has_key, dict2.keys())会有比写法2更高一些的执行效率,但是原作者没有说明具体的原因,同时这种效率的差距极其微小(同一数量级),因此写法2是可以接受的