带有子列表的两个列表之间的差异是每个子列表中的第一个元素

时间:2019-06-18 08:03:59

标签: python

我在python中有问题。 我需要得到两个带有子列表的列表之间的差异,但是我只需要比较每个子列表的第一个元素。

示例:

输入:

x=[[1,2],[2,3],[4,5]]

y=[[1,8],[5,1]]

输出:

dif_l=[[5,1]]

总结问题,我必须从y列表中减去x列表(dif_l = y-x),但只能检查每个子列表中的第一个元素。

2 个答案:

答案 0 :(得分:1)

可以使用列表理解:

    x=[[1,2],[2,3],[4,5]]

    y=[[1,8],[5,1]]

    diff_l = [l for l in y if l[0] not in [k[0] for k in x]]
    print(diff_l)

答案 1 :(得分:1)

将dicts作为中间步骤,将第一个值用作键。仅返回其他字典中未找到的那些键。

解决方案可能看起来像这样。

x=[[1,2],[2,3],[4,5]]

y=[[1,8],[5,1]]

def custom_sublist_subtract(left, right):
    ''' y - x should be passed as (y, x)
    '''
    dict_left = {item[0]: item for item in left}
    dict_right = {item[0]: item for item in right}
    result = [v for k, v in dict_left.items() if k not in dict_right]
    return result

custom_sublist_subtract(y, x)
#Output:
[[5, 1]]