Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中合并2个数组以获得唯一值_Python_Arrays_String_List - Fatal编程技术网

在python中合并2个数组以获得唯一值

在python中合并2个数组以获得唯一值,python,arrays,string,list,Python,Arrays,String,List,有2个df列,我想合并在一起。由于大多数值在相应的行中是相等的,所以我想创建一个具有每行唯一值的列 实现以下输出的最佳方法是什么 样本: list1 = ['','','dog','cat','cat'] list2 = ['dog','','dog','cat',''] 输出: combined_list = ['dog','','dog','cat','cat'] 您可以将列表理解与next+过滤器一起使用: list1 = ['','','dog','cat','cat'] list2

有2个df列,我想合并在一起。由于大多数值在相应的行中是相等的,所以我想创建一个具有每行唯一值的列

实现以下输出的最佳方法是什么

样本:

list1 = ['','','dog','cat','cat']
list2 = ['dog','','dog','cat','']
输出:

combined_list = ['dog','','dog','cat','cat']

您可以将列表理解与
next
+
过滤器一起使用:

list1 = ['','','dog','cat','cat']
list2 = ['dog','','dog','cat','']

L = [next(iter(filter(None, values)), '') for values in zip(list1, list2)]

['dog', '', 'dog', 'cat', 'cat']

注意:此解决方案优先考虑第一个“Truthy”值。它可以扩展到任意数量的输入列表。

每个列表中的顺序重要吗?否则,组合列表集合的列表:

combined_list = list(set(list1))+list(set(list2))

我们可以在这里使用
运算符:

[x or y for x, y in zip(list1, list2)]
假设第一个项目具有真实性
False
(这是空字符串的情况),它将使用第二个元素。如果第一个元素具有真实性
True
,则它将采用第一个元素

对于给定的样本输入,我们得到:

>>> [x or y for x, y in zip(list1, list2)]
['dog', '', 'dog', 'cat', 'cat']

如果两个元素都有非空字符串,那么它将使用第一个字符串。

如果同一行中的两个字符串不同怎么办?如果两个字符串不同,我希望将两个字符串保持在一起(逗号分隔),例如组合列表=['dog','','dog,cat','cat','cat'],当我在同一行中有相同的字符串时,这非常有效。例如,如果我有两个不同的字符串,我想将这两个唯一的字符串加在一起,例如:[“dog”,“dog,cat”,“cat”,“cat']。实现这一点的最佳方法是什么?类似于
[','.join(filter(None,values)),用于zip中的值(list1,list2)]