首页 > 解决方案 > Python:更好地使用字典或哈希图来处理数组的常见元素

问题描述

我必须从 2 个无序列表中找到常用数字列表。我有两种方法。有人可以解释哪个更好,为什么

def common_by_dictionary(a1,a2):
    d1 = {}
    for i in a1:
        if not(i in d1):
            d1[i]=1
    for i in a2:
        if (i in d1):
            d1[i]=0
    c = []
    for i in d1:
        if(d1[i]==0):
            c.append(i)
    print c

def common_by_hashmap(a1,a2):
    h = [0]*1000
    for i in a1:
        if not (i in h):
            h[i]=1
    c = []
    for i in a2:
        if(h[i]==1):
            c.append(i)
    print c



common_by_dictionary([1,3,4,6,7,9,12,5],[1,2,4,5,9,10,3])
common_by_hashmap([1,3,4,6,7,9,12,5],[1,2,4,5,9,10,3])

标签: pythonalgorithm

解决方案


您应该使用set

def common(first, second):
    return set(first) & set(second)

推荐阅读