Python 当列表项丢失时,将列表列表与附加值相结合

Python 当列表项丢失时,将列表列表与附加值相结合,python,list,Python,List,我需要合并列表列表,并在其他列表中没有项目时添加项目 我需要一种方法来表示一个值在三个列表的列表中不存在的时间。在下面的示例中,['e','f']仅在列表一(l1)中,因此将在列表二(l2)和三(l3)中添加占位符,以表示它在列表一中,而不是列表二和三。占位符类似于['e','-'] l1 = [['a', 'b'],['e','f']] l2 = [['a', 'b'],['c', 'd']] l3 = [['a', 'b'],['c', 'd']] 因此,最终,每个列表都会有一个条目,用于

我需要合并列表列表,并在其他列表中没有项目时添加项目

我需要一种方法来表示一个值在三个列表的列表中不存在的时间。在下面的示例中,
['e','f']
仅在列表一(
l1
)中,因此将在列表二(
l2
)和三(
l3
)中添加占位符,以表示它在列表一中,而不是列表二和三。占位符类似于
['e','-']

l1 = [['a', 'b'],['e','f']]
l2 = [['a', 'b'],['c', 'd']]
l3 = [['a', 'b'],['c', 'd']]
因此,最终,每个列表都会有一个条目,用于在列表项的第一个位置具有唯一值的任何列表项

l1 = [['a', 'b'],['c','-'],['e','f']
l2 = [['a', 'b'],['c','d'],['e','-']
l3 = [['a', 'b'],['c','d'],['e','-']
例如,我尝试将列表列表转换为集合,并可以找到公共对象

l1_set = set(tuple(row) for row in l1)
l2_set = set(tuple(row) for row in l2)
l3_set = set(tuple(row) for row in l3)

print (ipl_set & vgda_set & odm_set)

set([('a', 'b')])
我不知道如何管理集合,以便找到不同的值并修改列表以包含这些不同的值,同时保持列表中的位置

顺序很重要。我不想简单地像这样附加缺少的列表项:

l1 = [['a', 'b'],['e','f'],['c','-']
l2 = [['a', 'b'],['c','d'],['e','-']
l3 = [['a', 'b'],['c','d'],['e','-']
l1 = [['a', 'b'],['e','f']]
l2 = [['a', 'b'],['c', 'd']]
l3 = [['a', 'b'],['c', 'd']]

for couple in l1:
    if couple not in l2:
        print(couple)


您可以测试列表中的一对夫妇是否在另一个列表中,如下所示:

l1 = [['a', 'b'],['e','f'],['c','-']
l2 = [['a', 'b'],['c','d'],['e','-']
l3 = [['a', 'b'],['c','d'],['e','-']
l1 = [['a', 'b'],['e','f']]
l2 = [['a', 'b'],['c', 'd']]
l3 = [['a', 'b'],['c', 'd']]

for couple in l1:
    if couple not in l2:
        print(couple)

在上面的例子中,这只是一个示例,说明如何找到与
l1
不同的元素。但是,您可以修改阵列图像,而不只是进行打印


因此,如果您想修改数组,我建议您复制它们,而不要直接修改原始数组。

函数
add_missing_items()
接受任何数量(
>0
)的列表,并将其他列表中缺少的项目添加到这些列表中。假设列表中的项目可以按字母顺序排序:

l1 = [['a', 'b'],['e','f']]
l2 = [['a', 'b'],['c', 'd']]
l3 = [['a', 'b'],['c', 'd']]

def add_missing_items(*lists):
    l_sets = [set(tuple(row) for row in l) for l in lists]
    u = l_sets[0].union(*l_sets[1:])

    for lst, slst in zip(lists, l_sets):
        l = [list(v) for v in u.difference(slst)]
        for missing_value in l:
            missing_value[1::1] = '-' * (len(missing_value)-1)
        lst[:] = sorted(lst + l)

add_missing_items(l1, l2, l3)

print(l1)
print(l2)
print(l3)
印刷品:

[['a', 'b'], ['c', '-'], ['e', 'f']]
[['a', 'b'], ['c', 'd'], ['e', '-']]
[['a', 'b'], ['c', 'd'], ['e', '-']]

你的名单都是这样排序的吗?依字母顺序,我必须混淆真实数据,但是,可以按字母顺序考虑。