深入比较两个元组列表(Python)

2024-03-28 19:30:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python非常陌生,事实上,编程也是如此。 我有两个元组列表,它们之间没有重复(列表是通过列表理解消除重复元组的结果)。 我想在包含的元组(new/deleted/changed)中找到交集,并创建了以下示例:

包含组、项和计数器的元组列表:

list1 = [("fruits","apple",1),("fruits","banana",1),("legumes","bean",3),("meats","deadbeef",1),("meats","pork",2)]

list2 = [("fruits","apple",2),("fruits","mango",4),("legumes","pea",3),("plants","rose",1)]

我的目标是这样的:

*Report*:

New group:     "plants"    with item "rose", count 2

Deleted group: "meats"     with items "deadbeef", count 1, "pork", count 2

New item in group "fruits": "mango", count 4

New item in group "legumes": "pea", count 3

Deleted item in group "fruits": "banana", count 1

Deleted item in group "legumes": "bean", count 3

Changed item in group "fruits": item "apple" new count 2, old count 1

任何帮助都是非常感谢的,因为我完全被困在如何甚至开始:(

我甚至不确定我是否选择了正确的数据结构,所以我对每一个提示都完全开放。你知道吗

谢谢你

乔尔


Tags: inapple列表newcountgroupitembanana
1条回答
网友
1楼 · 发布于 2024-03-28 19:30:41
list1 = [("fruits","apple",1),("fruits","banana",1),("legumes","bean",3),("meats","deadbeef",1),("meats","pork",2)]
list2 = [("fruits","apple",2),("fruits","mango",4),("legumes","pea",3),("plants","rose",1)]
group1 = set([i[0] for i in list1])
group2 = set([i[0] for i in list2])
newItems = group2 - group1
print "New group:"+str(newItems)   #you can write logic for >>> with item "rose", count 2

dict1 = {}
for i in list1:
    dict1[i[1]] = i[2]
dict2 = {}
for i in list2:
    dict2[i[1]] = i[2]

totalkeys = set(dict1.keys() + dict2.keys())
for item in totalkeys:
    if dict1.has_key(item):
        if dict2.has_key(item):
            if dict1[item] ==dict2[item]:
                pass
            else:
                #your logic for change val
                pass
        else:
            pass #your logic for new item in list 2
    else:
        pass #your logic for deleted item

你可以把打印状态,因为你需要只是取代通行证打印“无论”

相关问题 更多 >