首页 > 解决方案 > 如何对2个相同数组数据的输出进行排序

问题描述

我有 :

I want the data to be like this :
    data array A    data array B      output array
    Alpha           Alpha             Alpha*
    Delta           Beta              Beta
    Fanta           Charlie           Charlie    
                    Delta             Delta*
                    Echo              Echo
                    Fanta             Fanta*

我想要的是,只要数组 A 和 B 中有相同的数据,用 * 标记的“数据”。如果我的英语不容易理解,我很抱歉。

提前致谢

标签: pythonarrays

解决方案


我希望我理解你的问题是正确的:你想合并两个数组,每个元素应该只出现一次(假设排序列表ab):

from heapq import merge
from itertools import groupby

a = ['Alpha', 'Delta', 'Fanta']
b = ['Alpha', 'Beta', 'Charlie', 'Delta', 'Echo']

c = [v for v, _ in groupby(merge(a, b))]

print(c)

印刷:

['Alpha', 'Beta', 'Charlie', 'Delta', 'Echo', 'Fanta']

编辑:要使用 标记重复元素*,您可以执行以下操作:

from heapq import merge
from itertools import groupby

# assuming sorted `a` and `b`:
a = ['Alpha', 'Delta', 'Fanta']
b = ['Alpha', 'Beta', 'Charlie', 'Delta', 'Echo', 'Fanta']

c = ['{}*'.format(v) if len(list(g)) > 1 else v for v, g in groupby(merge(a, b))]

print(c)

印刷:

['Alpha*', 'Beta', 'Charlie', 'Delta*', 'Echo', 'Fanta*']

推荐阅读