搜索列表完全匹配

时间:2010-10-01 23:07:45

标签: python

如何搜索所有完全元素与我要查找的内容相匹配的列表。例如,我想验证以下列表是否包含'a','b'和'c',以及更多或更少。

lst=['a', 'b', 'c']

我这样做了:

if 'a' in lst and 'b' in lst and 'c' in lst:
   #do something

非常感谢提前。

3 个答案:

答案 0 :(得分:6)

您可以对列表进行排序,然后只需对它们进行比较:sorted( list_one ) == sorted( list_two )

您也可以将两个列表转换为集合并进行比较。但要小心,套餐吃重复的物品! set( list_one ) == set( list_two )

集合还可以告诉您哪些项目缺少:set(list_one) ^ set(list_two)

一些例子:

>>> sorted("asd") == sorted("dsa")
True
>>> sorted( "asd" ) == sorted( "dsa" )
True
>>> sorted( "asd" ) == sorted( "dsaf" )
False
>>> set( "asd" ) == set( "dasf" )
False
>>> set( "asd" ) == set( "daas" )
True
>>> set( "asd" ) ^ set( "daf" )
set(['s', 'f'])

答案 1 :(得分:1)

这确实有效。为什么你认为它没有?

另外,你知道Python集吗? http://docs.python.org/library/sets.html

答案 2 :(得分:1)

使用套装可以满足要求: 在第一种情况下,列表是相同的,具有所有元素,没有更少或更多 而在第二种情况下它不是,它出现了。 您可以将此用于此目的。

>>> lst=['a', 'b', 'c']
>>> listtocheck = ['a', 'b', 'c']
>>> s1 = set(lst)
>>> s2 = set(listtocheck)
>>> k = s1 ^ s2
>>> k
set([])
>>> listtocheck = ['a', 'b', 'c', 'd']
>>> s2 = set(listtocheck)
>>> k = s1 ^ s2
>>> k
set(['d'])
>>> 
相关问题