我有一个这样的字符串:
my_string = "apple,orange,kiwi,mange"
我分裂成这个清单:
my_list_string = my_string.split(',')
我有第二个清单:
my_list = ["kiwi", "apple", "mange", "orange"]
在我对这两个列表的比较中,如果my_list
中的所有元素都在字符串my_string
中,我想返回true,所以我这样做:
my_list_string = my_string.split(',')
my_list = ["kiwi", "apple", "mange", "orange"]
if len(my_list_string) == len (set(my_list) & set(my_list_string)):
return True
else:
return False
还有另一种方法(最简单,最优雅,最有效的方式)进行比较吗?
答案 0 :(得分:5)
这是最有效的方法,因为set
具有O(1)摊销查询
>>> my_string = "apple,orange,kiwi,mange"
>>> my_list = ["kiwi", "apple", "mange", "orange"]
>>> set(my_list).issubset(my_string.split(','))
True
答案 1 :(得分:1)
另一个选项是检查两个集合之间是否存在任何差异(使用symmetric_difference):
my_string = "apple,orange,kiwi,mange"
my_list_string = my_string.split(',')
my_list = ["kiwi", "apple", "mange", "orange"]
if set(my_list_string) ^ set(my_list):
return False
else:
return True