检查列表是否存在于另一个列表中?

时间:2009-05-29 16:35:45

标签: python list

好吧,我正在尝试采用更加pythonic的做法。

我如何做到以下几点:

required_values = ['A','B','C']
some_map = {'A' : 1, 'B' : 2, 'C' : 3, 'D' : 4}

for required_value in required_values:
    if not required_value in some_map:
        print 'It Doesnt Exists'
        return False
return True

我查看了内置函数all,但我真的不知道如何将其应用于上述场景。

有什么建议让这更加pythonic?

3 个答案:

答案 0 :(得分:11)

all(value in some_map for value in required_values)

答案 1 :(得分:3)

return set(required_values).issubset(set(some_map.keys()))

答案 2 :(得分:0)

尝试列表理解:

返回不bool(如果x不在some_map.keys()中,则x为required_values中的x))(为了清晰起见,bool转换)

或者如果x不在some_map.keys()中,则不返回[x for required_values中的x](我认为更加pythonic方式)

inside []语句构建一个不在地图键中的所有必需值的列表 如果列表为空,则计算结果为False,否则计算结果为True。

因此,如果地图不是所有必需值,则列表推导表达式构建的列表中至少会有一个元素。 这将评估为True,因此我们否定了满足您的代码要求的结果(所有必需的值都应该出现在地图中)