在Python中处理列表

3

我有两个非唯一值列表,例如

["a", "b", "a", "c"] 

并且

 ["a", "b", "b", "f"]

我希望找出第二个列表中未出现在第一个列表中的元素。
我可以手动编写代码,但更愿意使用内置函数。由于我一直遇到可哈希/不可哈希的障碍,所以我无法想出如何实现。

如果您的障碍是您的值不可哈希,请告诉我们您的值,以便我们可以帮助您解决它。 - machine yearning
我现在明白了。我以为错误信息是指集合对象,而不是它们的成员。谢谢。 - Bernard Finucane
2个回答

8
在这种情况下,它将会是:
set(second_list) - set(first_list)

因为字符串是可哈希的,所以您可以将它们放入集合中。如果您有不可哈希的值,请告诉我们它们是什么,我们可能能想出解决方法。例如:
  • 您可以使用tuple(the_list)将列表转换为元组,可以使用list(the_tuple)转换回来。
  • 您可以使用tuple(the_set)将集合转换为元组,可以使用set(the_tuple)转换回来。
  • 您可以使用tuple(map(tuple, the_list))将嵌套列表转换为嵌套元组,可以使用list(map(list, the_tuple))转换回来。
  • 您可以使用tuple(the_dict.items())将字典转换为嵌套元组,可以使用dict(the_tuple)转换回来。

尝试过了,它有效。 - Bernard Finucane

1

[x for x in ListB if x not in ListB]

我认为这是一种非常快速的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接