在python中合并2个数组以获得唯一值
有2个df列,我想合并在一起。由于大多数值在相应的行中是相等的,所以我想创建一个具有每行唯一值的列 实现以下输出的最佳方法是什么 样本:在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
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)]
。