比较属于不同键的字典值

我在这样的列表中有一个字典:


sample_dict = [{1: [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], \

                    [1, 2, 3, 4, 5], \

                    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]]}, \

               {2: [[3, 4, 6, 7, 8, 9, 10, 11], [1, 2, 3, 6, 10], []]}]

现在,我想用 key1的第一个值检查列表中 key2的第一个值。像这样的东西,


比较值(键 1 列表的第一个值)


[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

with(键 2 列表的第一个值)


[3, 4, 6, 7, 8, 9, 10, 11]

如果它们匹配,我想将它附加到一个新列表中matching_list,如果不是,我想将不匹配的值附加到另一个列表中non_matching_list。


这是我迄今为止尝试过的,


matching_list = []

non_matching_list = []


for each_dict in sample_dict:

    current_dict_values = []

    for key, value_list in each_dict.items():

        temp_dict_values = []


        for value in value_list:

            temp_dict_values.append(value)


            .... don't know how to keep track of key 1's first list of lists values.

我正在考虑创建一个临时列表来跟踪关键1列表值,但我被卡住了,不知道如何继续。


我的最终输出应该是这样的:


matching_list = [[3,4,6,7,8,9,10], [1,2,3], []]

non_matching_list = [[1,2,5,11],[4,5,6,10],[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]]

我怎样才能实现我的输出?任何想法都会很棒。


三国纷争
浏览 92回答 1
1回答

梦里花落0921

这可以通过以下方法实现lists,以sets作出类似的操作symmetric_difference(),并intersection()为您non_matching_list和matching_list分别。这是其中一种解决方案:matching_list, non_matching_list = [], []for lists1, lists2 in zip(sample_dict[0].values(), sample_dict[1].values()):    for l1, l2 in zip(lists1, lists2):        matching_list.append(list(set(l1) & set(l2)))        non_matching_list.append(list(set(l1).symmetric_difference(set(l2))))请注意, usingset(l1) & set(l2)与 相同set(l1).intersection(set(l2)),所以这里基本上是一个交集操作。我还使用内置zip()函数来聚合每个可迭代对象(两个列表)中的元素。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python