2016-11-18 81 views
0

我想写一个函数,将字符串匹配和比较两个字符串之间的python 3,基本上第二个列表是验证,所以如果列表1中的任何项目不是在列表2我想抛出一个错误。如果它有任何不同,list1是来自CSV文件,我设法让行进入正确的位置。比较列表与另一个val列表Python 3

我很新,有点迷路。 EG:

list1 = ["a", "B", "AB"] 
list2 = ["a","B","abc"] 

因此,“AB”从直到有人有固定的CSV文件,因为“AB”的心不是在列表2列表1应关闭程序

list1 = ["a", "b"] 
list2 = ["b", "a"] 

这应该通过,因为他们都是在这两个列表中

list1可能有多个相同的字符串,我尝试了所有我能想到的。 任何帮助表示赞赏:)

+0

他们需要有相同的尺寸还是可以比另一个更大? –

+0

elethans答案下面为我工作使用集,我想能够有错误检查成长为我的CSV文件,但如果奇怪的东西进入它,那么它会抛出错误 –

回答

1

不像例如JavaScript,你可以在Python比较==列表和潜在回来True即使它们不是同一个对象:

In [1]: list1 = ["a", "B", "AB"] 

In [2]: list2 = ["a","B","abc"] 

In [3]: list1 == list2 
Out[3]: False 

In [4]: list3 = ["a", "B", "AB"] 

In [5]: list1 == list3 
Out[5]: True 

如果名单可能潜在地相同,但可能不是相同的顺序,您可以比较排序列表。

In [6]: list4 == list1 
Out[6]: False 

In [7]: sorted(list4) == sorted(list1) 
Out[7]: True 

所以,你可以这样做:

def same_list(l1, l2): 
    return sorted(l1) == sorted(l2) 

如果你从字面上想如果列表不等于引发错误,你可以使用raise MyErrorsame_list()函数内,或者用它如果该函数返回False

列表1可以多次

具有相同的字符串,如果你想有一个情况,如:

list1 = ["a", "b", "a", "b", "b"] 
list2 = ["b", "a"] 

引发错误,你可以使用set()

set(list1) == set(list2) # This will evaluate to True for the lists above 

这将比较两个列表中的独特元素,忽略重复项(还要注意排序不需要集合)。

+0

嘿,我实际上找到了一种不同的方式来解决我自己的问题(至少对我来说) 我做了一个关键列表,现在当信息从CSV文件输入时,程序使用for循环来检查它是否在列表中,如果它不是,则抛出错误在关键列表中...但感谢你的帮助人 –